A27
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Помогите с проблемой! Есть батник, котором %1 - путь к папке с программой: Код: @Echo Off Set Make=Sample.xls Image.exe Data\Data3.dat Data\*.bak Save\*.sav "Profiles\User 2" Temp For %%A in (%Make%) do ( Echo %%~A Pause ... любые другие команды... ) | по сути батник должен обрабатывать файлы в папке и подпапках программы (путь %1) при их обнаружении. В переменной %Make% указывается перечень файлов, которые необходимо обработать. Но есть проблема - батник не выполняет обработку для файлов *.bak *.sav. После нескольких тестовых запусков батника без @Echo Off обнаружилось, что цикл For просто игнорирует входные параметры, в которых присутствует звёздочка *, то есть он сразу переходит к следующему параметру "Profiles\User 2" и вообще не выполняет для параметров со звездочкой * любые команды заключенные в скобки после do ( ... ). Почему так происходит и как заставить его работать должным образом? Вот наглядно. Выполнение для параметров со звездочкой * просто отсутствует: Код: C:\>Test.bat c:\Master C:\>Set Make=Sample.xls Image.exe Data\Data3.dat Data\*.bak Save\*.sav "Profiles\User 2" Temp C:\>For %A in (Sample.xls Image.exe Data\Data3.dat Data\*.bak Save\*.sav "Profiles\User 2" Temp) do ( Echo %~A Pause ) C:\>( Echo Sample.xls Press any key to continue . . . ) C:\>( Echo Image.exe Press any key to continue . . . ) C:\>( Echo Data\Data3.dat Press any key to continue . . . ) C:\>( Echo Profiles\User 2 Press any key to continue . . . ) C:\>( Echo Temp Press any key to continue . . . ) | ---------- ---------- ---------- ---------- ---------- Причину выяснил: при обработке параметра с * цикл for ищет данные файлы в текущей папке - бестолково, конечно, но как есть. Цикл for заключенный в конструкцию push %1 - popd избавился от недуга. Если есть ещё другой способ, прошу озвучить. | Всего записей: 66 | Зарегистр. 30-03-2017 | Отправлено: 21:29 08-04-2018 | Исправлено: A27, 17:44 09-04-2018 |
|