Как я могу найти короткий путь к каталогу/файлу Windows?

мне нужно использовать укороченные имена путей для приложения, которое я использую. Например, мне нужно C:PROGRA~1 в противоположность C:Program Files. Программа не может обрабатывать пробелы и не принимает пути в кавычках (например,"C:Program Files").

Если это помогает, я использую Windows 7. Я могу получить доступ к любой версии начиная с XP, если это необходимо.

26
задан Nathan
27.03.2023 2:03 Количество просмотров материала 3232
Распечатать страницу

10 ответов

Start и введите cmd в поле Выполнить. Запустите cmd и используйте cd чтобы попасть в интересующую вас папку:

cd \

затем

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
61
отвечен Paul 2023-03-28 09:51

создать bat файл в удобном каталоге затем вы можете скопировать + вставить короткий путь из этого пути.

вы можете просто запустить command.com и продолжай cd команды для текущего каталога тоже.

в Windows batch-скрипты, %~s1 расширяет параметры пути до коротких имен. Создайте этот пакетный файл:

@ECHO OFF
echo %~s1

я назвал свой shortNamePath.cmd и назовем это так:

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

вот версия, которая использует текущий каталог, если параметр не указан:

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

вызывается без параметров:

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

используя SET и именованная переменная

Командная строка Windows имеет некоторые соглашения для обработки переменных с пространствами в их ценностях, которые несколько трудно изучить и понять, особенно если у вас есть в Unix.  Вы можете сделать

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

no котировки), или

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

(обратите внимание на неинтуитивное размещение кавычек); затем

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
31
отвечен SSpoke 2023-03-28 12:08

"короткое имя" на самом деле старое соглашение об именовании DOS 8.3, поэтому все каталоги будут первыми 6 буквами, за которыми следует ~1, предполагая, что есть только одно имя, которое соответствует, например:

C:\ABCDEF~1 - C:\ABCDEFG I AM КАТАЛОГ

C:\BCDEFG~1 - C:\BCDEFGHIJKL M другая Директория

вот единственное исключение

C:\ABCDEF~1 - C:\ABCDEFG I AM КАТАЛОГ

C:\ABCDEF~2 - C:\ABCDEFGHI каталог как ну

9
отвечен freedenizen 2023-03-28 14:25

вот один лайнер:

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

распад:

cmd /c - запускает новый экземпляр интерпретатора команд Windows, выполняет команду, заданную строкой, а затем завершает

for %%parameter in (set) do command-условное выполнение команды несколько раз.

echo - отображение сообщений на экране. @ символ совпадает с ECHO OFF применяется к текущей строке только.

%~s - расширенный Путь содержит только короткие имена.

Sources:

5
отвечен Ivan Schwarz 2023-03-28 16:42

Я нашел очень удобный способ решить короткий путь текущего каталога (или что-нибудь еще), если у Вас установлен Powershell.

просто откройте powershell в текущем каталоге

  • в cmd Windows наберите powershell

  • если у вас есть папка открыта в gui вы можете ввести cmd.exe или powershell.exe прямо в адресной строке папки.

затем дать команду

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

источник информации: [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

1
отвечен Eino Mäkitalo 2023-03-28 18:59

подобно Ивану Шварцу ответ, вы можете заменить "C:\Program файлы" с %cd% получить текущий каталог:

cmd /c for %A in ("%cd%") do @echo %~sA  
1
отвечен Eino Mäkitalo 2023-03-28 21:16

Я установил модули node, запустив npm install на шаблоне. При попытке удалить эти папки, windows не позволяет удалить их как путь слишком долго, чтобы быть в состоянии справиться.

после некоторых неглубоких исследований я подумал, что было бы правильно, чтобы мой собственный фрагмент кода переименовал папки от корня до листа, чтобы он также бросил любое исключение нарушения для этой попытки.

это работает для меня. Ниже приведен код для 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);
        }
    }
0
отвечен Ashok 2023-03-28 23:33

в качестве альтернативы, вы можете использовать этот удивительный маленький инструмент под названием PathCopyCopy

в несколько кликов вы можете получить длинный и короткий путь буквально к любой папке из контекстного меню, e.g:

щелкните правой кнопкой мыши в папке назначения => копировать путь => короткий путь.

сделано. Он будет скопирован в буфер обмена.

предварительный просмотр

0
отвечен Kwesi 2023-03-29 01:50

C:\Users\abcd>замест з: "c:\Program файлы (х86)\Майкрософт Office365 инструменты\Microsoft визуального Studio 14.0"

C:\Users\abcd > subst З:: => файлы C:\Program (для x86)\средства Microsoft Office365\Microsoft визуального Studio 14.0" Это самый простой способ я использовал при работе с файлами с пробелами и это можно из проводника тоже имеет все те же права доступа.

0
отвечен Santhosh Kumar 2023-03-29 04:07

просто замените пробелы на

%20

это способ "перевода", и пробелы переходят в %20.

Если вам действительно нужно много, просто откройте браузер и введите что-то вроде

test ";($#< and find the word test, and see that the space is %20 and so on...
-2
отвечен user556501 2023-03-29 06:24

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх