PDA

Показать полную графическую версию : Экранирование спец символов в пути файла (+в условии +цикле +EnableDelayedExpansion)


shadowbat
28-04-2023, 08:28
вот простенькое имя файла, который можно создать в 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
хотя, я наверное неверно определил переменную set File= в самом начале
наверное правильнее будет создать такой файл на компьютере и считать его путь в переменную

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

set "File=%~1"

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




© OSzone.net 2001-2012