Экранирование %в именах файлов и папок в командной строке [дубликат]

этот вопрос уже есть ответ здесь:

кто-нибудь из способа доступа к файлам и каталогам, которые имеют % в их имени (которое действительно) из командной строки? Конкретно, если есть два %и текст между ними случается чтобы соответствовать переменной среды.

например, если есть файл с именем C:blah%temp%.txt или папка с именем C:Program Files%temp%, ни одно из следующих действий не будет работать, так как переменная расширяется:

> dir "c:blah%temp%.txt"
> dir "c:blah^%temp^%.txt"
> dir "c:blah%%temp%%.txt"
> dir "c:blah%temp%.txt"

> dir "c:program files%temp%"
> dir "c:program files^%temp^%"
> dir "c:program files%%temp%%"
> dir "c:program files%temp%"



Использование подстановочных знаков будет работать, но не однозначно выбрать файл / папку и может включать в себя другие:

> dir "c:blah?temp?.txt"        (also shows ztempz.temp, 1tempa.txt, etc.)
> dir "c:program files?temp?"   (likewise)





(Это расстраивает, потому что время от времени-обычно, когда проводник перезапускается для независимо от причины-переменные среды перестают расширяться и некоторые места, где они используются в конечном итоге создания файлов или каталогов с переменной среды в нем. Например, потому что я настроил Chromium для хранения кэша в подкаталоге %temp%, если переменная расширяется, это нормально, но когда это не так, Chromium создает каталог с именем %temp% под своей Директорией и хранит тайник-который может получить больш-там. Я хочу добавить строку в сценарий очистки временных / нежелательных файлов автоматически удалять эту папку, если она существует, но я не могу понять, как получить к ней доступ из командной строки, не прибегая к подстановочным знакам.)

29
задан Synetech
07.05.2023 23:31 Количество просмотров материала 2865
Распечатать страницу

2 ответа

что-то странное случилось со мной, когда я тестировал это.

dir "C:\Program Files\^%temp^%"

по какой-то причине кавычки мешают экранированию. если я избегаю кавычки тоже, это работает.

dir ^"C:\Program Files\^%temp^%^"

это выглядит уродливо, но это работает.

Если в пути нет пробелов, то кавычки вообще не нужны.

7
отвечен Bob 2023-05-09 07:19
del c:\a\file^%named^%bob

доказательство:

C:\lolnope>edit bob

C:\lolnope>move bob bob^%was^%wub
        1 file(s) moved.


C:\lolnopen>dir "bob%was%wub"
 Volume in drive C is OS
 Volume Serial Number is CC34-08D9

 Directory of C:\lolnope

04/06/2012  08:18 PM                15 bob%was%wub
               1 File(s)             15 bytes



C:\lolnope>del bob^%was^%wub

C:\lolnope>dir bob^%was^%wub
 Volume in drive C is OS
 Volume Serial Number is CC34-08D9

 Directory of C:\lolnope

File Not Found

вы также можете заключить имя файла в двойные кавычки. Это, кажется, работает с завершением вкладки в CMD.ИСПОЛНЯЕМЫЙ.

Примечание: я тестировал только на Windows Vista и Windows 7. Это должно работать и для XP.

0
отвечен Jarrod Wageman 2023-05-09 09:36

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

Ваш ответ

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

Имя

Похожие вопросы про тегам:

command-line
environment-variables
escape-characters
filenames
windows
Вверх