|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Непонятное поведение переменных внутри FOR |
|
CMD/BAT - Непонятное поведение переменных внутри FOR
|
Новый участник Сообщения: 45 |
Делаю маленький скриптик для подготовки к бекапу. Только вот поведение этого скриптика совершенно неадекватное.
FOR /r %%A in ("*") DO ( set MYFILE=%%A echo %MYFILE%| findstr /I /R "Txt$" If %ERRORLEVEL% EQU 0 echo txt exist echo %MYFILE%| findstr /I /R "Cmd$" If %ERRORLEVEL% EQU 0 echo cmd exist ) Цитата:
|
||
Отправлено: 22:09, 22-06-2015 |
Ветеран Сообщения: 1758
|
@echo off setlocal enabledelayedexpansion FOR /r %%A in ("*") DO ( set MYFILE=%%A echo !MYFILE! | 1>nul findstr /I /R "Txt$" && echo txt exist echo !MYFILE! | 1>nul findstr /I /R "Cmd$" && echo cmd exist ) |
Отправлено: 22:33, 22-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать >Но зачем вообще переменная MYFILE, когда можно сразу обрабатывать %%A ?
Это я переменные обкатываю. >Да и findstr здесь не нужен, можно просто if exist *.txt findstr пригодится тоже. А что такое восклицательные знаки вокруг MYFILE? И пробел после MYFILE! не попадает в пайп? PS: Да точно, пробел лишний ![]() Спасибо. |
Последний раз редактировалось dasgespenst, 22-06-2015 в 22:50. Отправлено: 22:41, 22-06-2015 | #3 |
Ветеран Сообщения: 1758
|
|
Отправлено: 22:50, 22-06-2015 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать dasgespenst, Ваши «%MYFILE%» и «%ERRORLEVEL%», находящиеся внутри скобок, будут раскрыты в момент вхождения в скобки, посему надо использовать отложенное раскрытие переменных окружения (см. пост #2). И «if %errorlevel% equ 0 …» имеет смысл заменить на оператор «&&», как показано там же.
|
|
Отправлено: 22:53, 22-06-2015 | #5 |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать кстати без MYFILE с использрванием "А", я получаю странную ошибку "Достигнут уровень рекурсии, максимально возможный для команды SETLOCAL."
А как можно if exist "*.txt" туда добавить, ему вроде сам файл надо указывать? |
Отправлено: 23:06, 22-06-2015 | #6 |
Ветеран Сообщения: 1758
|
|
Отправлено: 23:42, 22-06-2015 | #7 |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать А как в подпрограмму добавить FOR? У меня FOR воспринимается как EOF.
|
Отправлено: 18:16, 28-06-2015 | #8 |
Ветеран Сообщения: 1758
|
dasgespenst, вопрос не понятен, поконкретней.
|
Отправлено: 19:33, 28-06-2015 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Непонятное поведение семерки | жекон | Хочу все знать | 0 | 29-01-2012 10:33 | |
Непонятное поведение принтера. | roniro | Непонятные проблемы с Железом | 1 | 27-07-2011 11:43 | |
Непонятное поведение компа | Quard | Непонятные проблемы с Железом | 4 | 14-01-2010 17:48 | |
НЕпонятное поведение компа | Ziki | Непонятные проблемы с Железом | 4 | 19-02-2009 12:41 | |
непонятное поведение компов | Andrey1 | Непонятные проблемы с Железом | 23 | 22-01-2006 02:00 |
|