CMD/BAT - Цикл for, команда dir с двумя шаблонами файлов

Ответить
Аватара пользователя
ИЩАЕР

CMD/BAT - Цикл for, команда dir с двумя шаблонами файлов

Сообщение ИЩАЕР »

Здравствуйте.

Командный файл разносит поступающие файлы в архив и для дальнейшей обработки:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
rem Переменная для паузы в цикле копирования файлов, только после входа в 
rem цикл - когда список файлов сформирован, для завершения формирования файлов.
Set flag=
for /f "delims=" %%a in ('dir c:\uta\in\*.* /b/o:ne/a-d 2^>nul') do (
If Not Defined flag (
rem пауза для завершения формирования файлов один раз, при входе в цикл.
echo передача файлов из УТА  в КБР:>con
Set flag=1
c:\UTIL\sleep 5
time /t>con
)
rem копируем для архивирования
copy c:\uta\in\%%a C:\arh\KBR\UTA2KBR\%%a
rem переносим для обработки ПК АРМ КБР
move c:\uta\in\%%a c:\uarm2\exg\inc\%%a
)

Поступило изменение: надо учитывать в файлах "рабочий" день месяца. Для примера задал в переменной:



Код:

Код: Выделить всё

rem рабочий день:
set K_dd=27

Файлов два типа:

c:\uta\in\?????K_dd???.EDS

c:\uta\in\??????????K_dd???.ED

[/i]



Как изменить цикл for для обработки файлов с такими условиями?

Так не работает:



Код:

Код: Выделить всё

for /f "delims=" %%a in ('dir c:\uta\in\?????%%K_dd???.EDS c:\uta\in\??????????%%K_dd???.ED /b/o:ne/a-d 2^>nul') do (

Спасибо!
Аватара пользователя
megaloman

Re: CMD/BAT - Цикл for, команда dir с двумя шаблонами файлов

Сообщение megaloman »

ИМХО Вместо %%K_dd надо %K_dd%

Особенно в задачу не вчитывался, возможно, что-то еще не так, но это очевидно.
Аватара пользователя
ИЩАЕР

Re: CMD/BAT - Цикл for, команда dir с двумя шаблонами файлов

Сообщение ИЩАЕР »

Спасибо!

Из справки (как-то без Вашей подсказки пропускал данный текст):
Цитата:



Использование нескольких имен_файлов

Допускается использование нескольких имен_файлов. Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла.



Сделал так:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
rem Переменная для паузы в цикле копирования файлов, только после входа в 
rem цикл - когда список файлов сформирован, для завершения формирования файлов.
Set flag=
c:
cd c:\uta\in\
for /f "delims=" %%a in ('dir ?????%K_dd%???.EDS ??????????%K_dd%???.ED /b/o:ne/a-d 2^>nul') do (
If Not Defined flag (
rem пауза для завершения формирования файлов один раз, при входе в цикл.
echo передача файлов из УТА  в КБР:>con
Set flag=1
c:\UTIL\sleep 5
time /t>con
)
rem копируем для архивирования
copy c:\uta\in\%%a C:\arh\KBR\UTA2KBR\%%a
rem переносим для обработки ПК АРМ КБР
move c:\uta\in\%%a c:\uarm2\exg\inc\%%a
)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»