CMD/BAT - Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion)

Ответить
Аватара пользователя
shadowbat

CMD/BAT - Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion)

Сообщение shadowbat »

вот простенькое имя файла, который можно создать в windows



Код:

Код: Выделить всё

C:\FO!LDER!@#`$%^&_+~;(`)[]{- =}_z_,te.st6_фы t- =6.(11+ ,фыв! +1)77 !№;%()_+!@#- =$%^&()_+66\FI_LE!@#.$.%^&_+~;()[]{}_z_test6_фы t6(11+ фыв! +1)77 !№;%()_+,!@#$`%^&(-, =)`_+66.txt

как его правильно экранировать, чтобы взаимодействовать и не критовать cmd окно?

не критовать окно скобками в условиях if и цикле for

не критовать окно воскл знаками в отложенных переменных



как сделать чтобы echo File File2 File3 File4 File5 на экране были одинаковыми? (ну или в крайнем случае отличались только обрамляющими кавычками)



Код:

Код: Выделить всё

chcp 1251
@echo off
set File=C:\FO!LDER!@#`$%^&_+~;(`)[]{- =}_z_,te.st6_фы t- =6.(11+ ,фыв! +1)77 !№;%()_+!@#- =$%^&()_+66\FI_LE!@#.$.%^&_+~;()[]{}_z_test6_фы t6(11+ фыв! +1)77 !№;%()_+,!@#$`%^&(-, =)`_+66.txt
echo %File%
set File1=%File%
echo %File1%
if "2"=="2" (
set File2=%File%
)
echo %File2%
setlocal EnableDelayedExpansion
if "2"=="2" (
set File3=%File%
echo !File3!
)
endlocal
for %%i in (%File%) do (
set File4=%File%
)
echo %File4%
setlocal EnableDelayedExpansion
for %%i in (%File%) do (
set File5=%File%
echo !File5!
)
endlocal
Аватара пользователя
shadowbat

Re: CMD/BAT - Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion)

Сообщение shadowbat »

хотя, я наверное неверно определил переменную set File= в самом начале

наверное правильнее будет создать такой файл на компьютере и считать его путь в переменную





Код:

Код: Выделить всё

setlocal EnableDelayedExpansion
FOR /r %%I in (*) DO (set "File=%%I")
endlocal

ну или



Код:

Код: Выделить всё

set "File=%~1"

а потом уже начинать работать с File12345
Ответить

Вернуться в «Скриптовые языки администрирования Windows»