Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Цикл for, команда dir с двумя шаблонами файлов (http://forum.oszone.net/showthread.php?t=279867)

ИЩАЕР 27-03-2014 10:14 2329224

Цикл 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


Как изменить цикл 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 2329358

ИМХО Вместо %%K_dd надо %K_dd%
Особенно в задачу не вчитывался, возможно, что-то еще не так, но это очевидно.

ИЩАЕР 27-03-2014 16:14 2329375

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

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

@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 2329684

Вот еще решение, сразу поиском не нашел, через Findstr


Время: 07:58.

Время: 07:58.
© OSzone.net 2001-