Войти

Показать полную графическую версию : [решено] Видоизменить for %%f in....


Sat_Kelman
13-05-2011, 08:33
День добрый!

Есть батник который проверяет поступление файлов в каталог.

@echo off
title Проверка поступления файлов
set dirLib=С:\Отдел\Tools
cd "%~dp0"

set dirIn=M:\Firma1\in
set dirIn2=M:\Firma1\IN\other


for %%f in ("%dirIn%\may*.*") do call :show %%f "Firma1"
for %%f in ("%dirIn%\DBF*.*") do call :show %%f "Firma1"
rem for %%f in ("%dirIn%\*.arj") do call :show %%f "Firma1"

for %%f in ("%dirIn2%\*.*") do call :show %%f "Firma1"

goto end

:show
call "%dirLib%\Alert" "%~2. Поступил файл %1."
goto end

:end


Вот эта строка rem for %%f in ("%dirIn%\*.arj") do call :show %%f "Firma1" проверяет поступление всех файлов .arj
Как ее видоизменить чтоб обрабатывались все .arj кроме client.arj и spravka.arj ???

Sat_Kelman
13-05-2011, 12:51
Ссори, ошибочка в первом посте. Нужно чтоб обрабатывал все .arj кроме client.arj и spravka.arj

Iska
13-05-2011, 14:00
Sat_Kelman, никак. Маска в «for» предназначена для включения, но не исключения. Следовательно, нужно после разбора сделать проверку на потребные файлы исключения, например (годится при малом числе файлов исключения):
for %%i in ("*.arj") do if "%%i" neq "client.arj" if "%%i" neq "spravka.arj" call :show "%%i" "Firma1"

megaloman
13-05-2011, 16:18
......................

for %%f in ("%dirIn%\may*.*" "%dirIn%\DBF*.*" "%dirIn%\*.arj" "%dirIn2%\*.*") do call :show "%%f" "Firma1"
GoTo :Eof

:show
if %1=="%dirIn%\client.arj" GoTo :Eof
if %1=="%dirIn%\spravka.arj" GoTo :Eof

call "%dirLib%\Alert" "%~2. Поступил файл %~1."
GoTo :Eof

И можете делать сколько угодно исключений. GoTo :End не нужно
"%%f" - обязательно в кавычках, если в пути (имени) возможны пробелы




© OSzone.net 2001-2012