2011-10-19 00:35:44 +0000 2011-10-19 00:35:44 +0000
83
83

Jak mogę znaleźć skróconą ścieżkę do katalogu/pliku Windows?

Muszę użyć skróconej nazwy ścieżki dla aplikacji, której używam. Na przykład potrzebuję C:\PROGRA~1 Muszę użyć skróconej nazwy ścieżki dla aplikacji, której używam. Na przykład potrzebuję w przeciwieństwie doC:\Program Files. Program nie potrafi obsługiwać spacji i nie akceptuje cytowanych ścieżek (np.“C:\Program Files”`).

Jeśli to pomoże, używam Windows 7. W razie potrzeby mogę uzyskać dostęp do dowolnej wersji od XP.

Odpowiedzi (12)

84
84
84
2011-10-19 00:51:45 +0000

Start, i wpisz cmd w polu startowym. Start cmd, i użyj cd, aby przejść do interesującego Cię folderu:

cd \

Następnie

dir /x

C:\>dir /x

13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
42
42
42
2014-03-13 23:11:39 +0000

Stwórz plik nietoperza w jakimś wygodnym katalogu, a następnie skopiuj i wklej krótką ścieżkę z tej ścieżki.

Możesz po prostu uruchomić command.com i wykonywać komendy cd także do bieżącego katalogu.

W skryptach wsadowych Windows, %~s1 rozszerza parametry ścieżki do krótkich nazw . Stwórz ten plik wsadowy:

@ECHO OFF
echo %~s1

Nazwałem mój shortNamePath.cmd i nazwałem go tak:

C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

Oto wersja, która używa aktualnego katalogu, jeśli nie podano żadnych parametrów:

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1

Wywołano bez parametrów:

C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

Użytkowanie SET i nazwanej zmiennej

Windows Command Prompt posiada pewne konwencje obsługi zmiennych ze spacjami w ich wartościach, które są nieco trudne do nauczenia się i zrozumienia, zwłaszcza jeśli masz tło uniksowe.   You can do

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk

(z cudzysłowami no), lub

SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

(zauważ nieintuicyjne umieszczenie cudzysłowów); następnie

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
13
13
13
2017-05-22 06:42:16 +0000

Tutaj jest jeden liner :

cmd /c for %A in ("C:\Program Files") do @echo %~sA

Awaria :

  • cmd /c - Uruchamia nową instancję interpretera komend Windows, wykonuje komendę określoną przez łańcuch, a następnie kończy komendę
  • for %%parameter in (set) do - Warunkowo wykonuje komendę kilka razy.
  • echo - Wyświetla komunikaty na ekranie. @ symbol jest taki sam jak ECHO OFF tylko dla bieżącej linii.
  • %~s - Rozszerzona ścieżka zawiera tylko krótkie nazwy.

Źródła :

9
9
9
2011-10-19 01:02:20 +0000

Nazwa krótka" jest tak naprawdę starą konwencją nazewniczą DOS 8.3, więc wszystkie katalogi będą miały 6 pierwszych liter, a następnie ~1, zakładając, że istnieje tylko jedna nazwa, która pasuje, na przykład:

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

tutaj jest jedynym wyjątkiem

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
7
7
7
2018-05-12 11:16:06 +0000

Znalazłem bardzo przydatny sposób na rozwiązanie krótkiej ścieżki dostępu do aktualnego katalogu (lub czegokolwiek innego), jeśli masz zainstalowany Powershell.

Just open powershell in current dir

  • w cmd windows wpisz powershell

  • jeśli masz otwarty folder w gui możesz wpisać cmd.exe lub powershell.exe bezpośrednio w pasku adresu folderu.

Następnie wydaj polecenie

(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath

Pochodzenie informacji: [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

4
4
4
2018-05-12 15:31:59 +0000

Podobnie jak Ivan Schwartz odpowiedź , możesz zastąpić “C:\Pliki programu” %cd% aby uzyskać aktualną dir:

cmd /c for %A in ("%cd%") do @echo %~sA
0
0
0
2017-06-23 17:15:55 +0000

Alternatywnie, możesz użyć tego niesamowitego małego narzędzia o nazwie PathCopyCopy

W kilku kliknięciach, możesz uzyskać długą i krótką ścieżkę dosłownie z dowolnego folderu z menu kontekstowego, np.:

Kliknij prawym przyciskiem myszy w folderze docelowym => Path Copy => Short Path.

Gotowe. Zostanie on skopiowany do schowka. podgląd

0
0
0
2019-11-03 14:38:08 +0000
@echo off
for %%i in (%*) do echo %%~si
pause

Zapisz go jako shorttpath.bat , a następnie przeciągnij na niego pliki. Jego wynik:

C:\PROGRA~1
C:\PROGRA~2
C:\PROGRA~3
C:\Python27
C:\Users
C:\Windows
Press any key to continue . . .

Wywołanie go z shortpath <file path> jest również w porządku.

0
0
0
2017-12-02 17:57:42 +0000
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

Jest to najprostszy sposób, w jaki korzystałem z plików ze spacjami i jest on dostępny z eksploratora plików, który również posiada wszystkie te same uprawnienia dostępu.

0
0
0
2020-01-26 22:04:35 +0000

dla Windows 10 użytkowników** Żaden** z tych rozwiązań nie działał na moim laptopie Windows 10, ponieważ klucz w rejestrze zabraniał tworzenia skrótów… :

  • Alt+r, wpisz regedit aby otworzyć edytor rejestru
  • przejdź do HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • wyszukaj klucz NtfsDisable8dot3NameCreation : jeśli wartość wynosi 0x00000001(1), wtedy system nie tworzy nazwy skróconej dla folderu/pliku
  • w tym przypadku kliknij dwukrotnie na klucz NtfsDisable8dot3NameCreation,
  • wpisz 0 w polu danych

to nie jest wsteczne :) Chodzi mi o to, że musisz odtworzyć folder/plik, do którego masz dostęp ze swojej starej aplikacji. Może coś mądrego jest możliwe, choć jeszcze nie wiem.

wygląda na to, że wprowadzili ten klucz, aby przyspieszyć działanie systemu plików.

source microsoft https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959352(v=technet.10)?redidirectfrom=MSDN

-1
-1
-1
2016-11-06 10:51:58 +0000

Zainstalowałem moduły węzłowe, uruchamiając npm install na płycie kotła. Próbując usunąć te foldery, okna nie pozwalają nam na ich usunięcie, ponieważ ścieżka jest zbyt długa, aby być w stanie obsłużyć.

Po kilku płytkich badaniach pomyślałem, że dobrze by było, gdyby mój własny fragment kodu zmienił nazwę folderów z korzenia na liść tak, aby rzucił wszelkie wyjątki od tej próby.

To działa dla mnie. Oto kod dla projektu C#.

public static int directoryCounterIndex = 0;
    public static void Main(string[] args)
    {
        string dirPath = @"D:\Studies\MeanStack\a\nodem";
        RenameDirectories(dirPath);
    }

    private static void RenameDirectories(string dirPath)
    {
        directoryCounterIndex += 1;
        var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
        Directory.Move(dirPath, newPath);
        var subDirectories = Directory.GetDirectories(newPath);
        foreach (var subDirectory in subDirectories)
        {
            RenameDirectories(subDirectory);
        }
    }
-2
-2
-2
2016-02-10 15:18:55 +0000

Wystarczy zastąpić spacje

%20

W ten sposób rzeczy są “tłumaczone”, a spacje przechodzą w %20.

Jeśli naprawdę potrzebujesz dużo, po prostu otwórz swoją przeglądarkę i wpisz coś w stylu

test ";($#< and find the word test, and see that the space is %20 and so on...