Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Видоизменить for %%f in....

Ответить
Настройки темы
CMD/BAT - [решено] Видоизменить for %%f in....

Новый участник


Сообщения: 34
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Sat_Kelman
Дата: 13-05-2011
День добрый!

Есть батник который проверяет поступление файлов в каталог.
Код: Выделить весь код
@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 ???

Отправлено: 08:33, 13-05-2011

 

Новый участник


Сообщения: 34
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ссори, ошибочка в первом посте. Нужно чтоб обрабатывал все .arj кроме client.arj и spravka.arj

Отправлено: 12:51, 13-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:00, 13-05-2011 | #3


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


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

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" - обязательно в кавычках, если в пути (имени) возможны пробелы

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 14-05-2011 в 09:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:18, 13-05-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Видоизменить for %%f in....

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход