Цитата ChimMAG:
CMD очень не любит имена файлов со всякими !, скобками и прочими символами. Почему так или как-то можно отследить это? »
|
Надо правильно их употреблять. Потому что Вы используете EnableDelayedExpansion, что предполагает наличие переменных в !!. Соответственно, при обработке строк то, что встречается в !! интерпретируется как переменная с непредсказуемыми последствиями. Выкручивайтесь как-нибудь без EnableDelayedExpansion - уверяю, это возможно. Изложите, чего Вы домогаетесь, можно тогда советовать конкретнее: по обрывкам кода без четкой постановки трудновато, конструкция
(set TKatD="%%a"&if "%%a"==!TKatD! (call :ObrabKat))
меня угнетает, я её не понимаю. Как возможный приём (не решение, только как пример):
Код:
@Echo Off
cls
Set "TKatD=!!!MS-DOS-ver.5-7 (ms-dos.biz)!!!"
For /R %%d In (.) Do Echo %%d |>nul 2>&1 FindStr /I "\%TKatD%\" &&Call :ObrabKat "%%d"
Pause
Exit /B
:ObrabKat
Echo %1
Dir %1 /s /b /A:-D
Exit /B
Код:
@Echo Off
cls
For /R %%d In (.) Do (
Set "TKatD=%%d"
Call Echo "%%TKatD%%"
Call :ObrabKat "%%d" "%%TKatD%%"
)
Pause
Exit /B
:ObrabKat
If %1==%2 Echo Ура! %1 %2
Exit /B
Помимо этого, если в имени файла встречается символ не из 866 кодовой страницы, иногда помогает при этом
chcp 1251. Надо конкретика задачи.