Мне нужно использовать сокращенные пути для приложения, которое я использую. Например мне нужно C:\PROGRA~1\
в отличие от C:\Program Files
. Программа не может обрабатывать пробелы и не принимает кавычки (например "C:\Program Files"
).
Если это помогает, я использую Windows 7. Я могу получить доступ к любой версии начиная с XP, если это необходимо.
/s
Переключатель выполняет рекурсию подпапкиСоздайте файл bat в некотором удобном каталоге, затем вы можете скопировать + вставить короткий путь из этого пути.
Вы можете просто запускать
command.com
и продолжать выполнятьcd
команды для своего текущего каталога.В пакетных сценариях Windows
%~s1
расширяет параметры пути до коротких имен . Создайте этот пакетный файл:Я позвонил своему
shortNamePath.cmd
и назвал это так:Вот версия, которая использует текущий каталог, если не был указан параметр:
Вызывается без параметров:
Использование
SET
и именованная переменнаяКомандная строка Windows имеет некоторые соглашения для обработки переменных с пробелами в их значениях, которые довольно трудно выучить и понять, особенно если у вас есть опыт работы с Unix. Ты можешь сделать
( без кавычек ) или
(обратите внимание на не интуитивное размещение цитат); тогда
источник
Вот один вкладыш :
Разбивка :
cmd /c
- Запускает новый экземпляр интерпретатора команд Windows, выполняет команду, указанную в строке, а затем завершает работу.for %%parameter in (set) do
команда - Условно выполнить команду несколько раз.echo
- Отображать сообщения на экране.@
Символ такой же, как иECHO OFF
для текущей строки.%~s
- Расширенный путь содержит только короткие имена.Источники :
источник
cmd /c
? Если вы находитесь в окне командной строки, вы можете просто ввестиfor %A in ("C:\Program Files") do @echo %~sA
команду, и если вы введете ее в диалоговом окне «Выполнить», результат исчезнет, прежде чем вы сможете ее прочитать.cmd /c
при запуске изcmd
; он вам нужен из PowerShell , но тогда вам также нужно'...'
-откратить токены после/c
:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
«Короткое имя» на самом деле является старым соглашением об именах в DOS 8.3, поэтому все каталоги будут первыми 6 буквами, после которых
~1
предполагается, что существует только одно имя, которое соответствует, например:здесь единственное исключение
источник
Program Files
иProgram Files (x86)
является ,PROGRA~1
и который один естьPROGRA~2
. Ответ Павла решает эту проблему....~4
) это начиналось с того, что выглядит как хеширование, например,ABxxxx~1
где х был шестнадцатеричным - что не очень легко прочитать.ABCDEFGH-CAT
, он получает короткое имяABCDEF~1
. Если я потом создаюABCDEFGH-DOG
, оно получит короткое имяABCDEF~2
. Если я затем удалитьABCDEFGH-CAT
,ABCDEFGH-DOG
все еще имеет короткое имяABCDEF~2
. Там нет никакого способа сказать, просто посмотрев на длинные имена.~1
. Смотрите правило, которое Windows использует для генерации коротких имен . И вы также можете установить короткое имя вручнуюfsutil
, чтобы два имени не имели никакого отношения. Не говоря уже о жестких или мягких ссылкахЯ нашел очень удобный способ для определения короткого пути к текущему каталогу (или к чему-либо еще), если у вас установлен Powershell.
Просто откройте PowerShell в текущем каталоге
в cmd окна типа powershell
если у вас есть открытая папка в графическом интерфейсе, вы можете ввести cmd.exe или powershell.exe прямо в адресную строку папки.
Тогда дайте команду
Происхождение информации: [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
источник
Подобно ответу Ивана Шварца , вы можете заменить «C: \ Program Files» на,
%cd%
чтобы получить текущий каталог:источник
Кроме того, вы можете использовать этот удивительный маленький инструмент под названием PathCopyCopy
За несколько кликов вы можете получить длинный и короткий путь буквально любой папки из контекстного меню, например:
Готово. Он будет скопирован в ваш буфер обмена.
предварительный просмотр
источник
Я установил узловые модули, работая
npm install
на шаблоне. При попытке удалить эти папки окна не позволяют нам удалить их, поскольку путь слишком длинный, чтобы его можно было обработать.После некоторого поверхностного исследования я подумал, что было бы правильно, если бы мой собственный фрагмент кода переименовал папки из корня в лист, чтобы он также выдавал любое исключение нарушения для этой попытки.
Меня устраивает. Ниже приведен код для проекта C #.
источник
Это самый простой способ, который я использовал при работе с файлами с пробелами, и он доступен из проводника, тоже имеет те же права доступа.
источник
Сохраните его как shortpath.bat, а затем перетащите на него файлы. Его результат:
Вызов это с
shortpath <file path>
тоже хорошо.источник
Просто замените пробелы на
Это способ, которым вещи «переводятся», и пробелы переходят в% 20.
Если вам действительно нужно много, просто откройте браузер и введите что-то вроде
источник
if exist C:\Program%20Files\ (echo exists)