Войти

Показать полную графическую версию : Цикл for, команда dir с двумя шаблонами файлов


ИЩАЕР
27-03-2014, 10:14
Здравствуйте.
Командный файл разносит поступающие файлы в архив и для дальнейшей обработки:

@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


Как изменить цикл 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
27-03-2014, 15:30
ИМХО Вместо %%K_dd надо %K_dd%
Особенно в задачу не вчитывался, возможно, что-то еще не так, но это очевидно.

ИЩАЕР
27-03-2014, 16:14
Спасибо!
Из справки (как-то без Вашей подсказки пропускал данный текст):Использование нескольких имен_файлов
Допускается использование нескольких имен_файлов. Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла.

Сделал так:
@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
)

ИЩАЕР
28-03-2014, 11:40
Вот еще решение, сразу поиском не нашел, через Findstr (http://forum.oszone.net/post-2042739-3.html)




© OSzone.net 2001-2012