Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion) (http://forum.oszone.net/showthread.php?t=353488)

shadowbat 28-04-2023 08:28 3008254

Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion)
 
вот простенькое имя файла, который можно создать в 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 28-04-2023 10:19 3008265

хотя, я наверное неверно определил переменную set File= в самом начале
наверное правильнее будет создать такой файл на компьютере и считать его путь в переменную

Код:

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

ну или
Код:

set "File=%~1"
а потом уже начинать работать с File12345


Время: 23:55.

Время: 23:55.
© OSzone.net 2001-