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

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

Ответить
Настройки темы
CMD/BAT - [решено] Обработка нескольких файлов

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


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

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


Добрый день.
Есть SFTP сервер , на который постоянно поступают XML файлы в виде (Request20100310-01.xml)
Есть батник который переименовывает этот XML файл в Request.xml (это имя не меняется) , копирует и отправляет этот файл дальше, после чего файл удаляется.
Загвоздка в том что , поступающих XML файлов может быть сколько угодно (Request20100310-01, 02, 03.xml)
Как сделать так чтобы каждый файл обрабатывался отдельно, то есть сначала один переименовался, скопировался, отправлялся, удалялся , потом другой. И так до тех пор пока все файлы не будут отработаны.
Заранее спасибо.

Отправлено: 15:32, 10-03-2010

 

Пользователь


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

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


что то типа
for %%T IN (Request20100310-*.xml) do (что то делаем)
попробуй для начала их копировать просто. Да, скобки после DO разноси на разные строки если команд много будет.
есть смысл еще тут поискать ://forum.ru-board.com/topic.cgi?forum=62&topic=10650&glp

Отправлено: 17:33, 10-03-2010 | #2



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

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


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


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

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


Похоже на правду. С копированием проходит, но как только доходит до строчки move, то получаю ошибку : A duplicate file name exists, or the file cannot be found.
Такое чувство что цикл не отрабатывает.
Подскажите где поправить.

Вот кусок кода.

Код: Выделить весь код
FOR %%T IN (%XML_PREFIX%*.xml) do (    
   copy %sftp_home%\*.xml %sgw_backup%   
   copy %sgw_backup%\*.xml "D:\- BACKUP\SGW\incoming"    
   d:    
   cd %sftp_home%     
   ren %XML_PREFIX%*.xml %XML_PREFIX%.xml   
   move %sftp_home%\%XML_PREFIX%.xml %sgw_home%\sending
   del %sgw_home%\sending\%XML_PREFIX%.xml
)

Отправлено: 13:19, 11-03-2010 | #3


Googler


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

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


Цитата laipisas02:
Подскажите где поправить »
без каких-нибудь реальных значений переменных/файлов сложно делать выводы, нужен минимальный тестовый скрипт/набор имен файлов, воспроизводящих ошибку

Отправлено: 16:57, 11-03-2010 | #4


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


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

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


Вот собственно сам скрипт

Код: Выделить весь код
@echo off 

set sftp_home="D:\- BACKUP\SFTP" 
set sgw_home="D:\- Applications\sgw" 
set sgw_backup="D:\- BACKUP\SGW" 
set XML_PREFIX=ping 
IF EXIST %sftp_home%\*.xml GOTO moving 
IF NOT EXIST %sftp_home%\*.xml GOTO exit 

:moving  
FOR %%a IN (%XML_PREFIX%*.xml) do (   
copy %sftp_home%\*.xml %sgw_backup%    
copy %sgw_backup%\*.xml "D:\- BACKUP\SGW\incoming"    
d:    
cd %sftp_home%    
ren %XML_PREFIX%*.xml %XML_PREFIX%.xml    
move %sftp_home%\%XML_PREFIX%.xml %sgw_home%\sending 
cd %sgw_home% 
call send.bat (за отправку файла отвечает этот батник) 
del %sgw_home%\sending\%XML_PREFIX%.xml 
)
:exit  
exit

Отправлено: 19:09, 11-03-2010 | #5


Googler


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

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


Цитата laipisas02:
получаю ошибку : A duplicate file name exists, or the file cannot be found. »
нельзя переименовать много файлов (по маске) в один, команда:
Код: Выделить весь код
ren ping*.xml ping.xml

Отправлено: 05:30, 12-03-2010 | #6


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


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

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


Цитата amel27:
нельзя переименовать много файлов (по маске) в один, команда: »
а как можно? надо чтобы каждый файл по порядку проходил цикл.

Отправлено: 10:29, 12-03-2010 | #7


Аватара для El Sanchez

Ветеран


Contributor


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

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


laipisas02, цикл используете, а переменную цикла нет.
В общем, пробуйте

Код: Выделить весь код
@echo off

set "sftp_home=D:\- BACKUP\SFTP"
set "sgw_home=D:\- Applications\sgw"
set "sgw_backup=D:\- BACKUP\SGW"
set XML_PREFIX=ping

if not exist "%sftp_home%\*.xml" exit /b 0

for %%a in ("%sftp_home%\%XML_PREFIX%*.xml") do (
	copy /y "%%a" "%sgw_backup%" 1>nul 2>&1
	copy /y "%%a" "%sgw_backup%\incoming" 1>nul 2>&1
	move /y "%%a" "%sgw_home%\sending\%XML_PREFIX%.xml" 1>nul 2>&1
	call "%sgw_home%\send.bat"
)
del /f /q "%sgw_home%\sending\%XML_PREFIX%.xml"
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:23, 12-03-2010 | #8


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


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

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


El Sanchez, спасибо. То что надо. Единственное я не понял значения 1>nul 2>&1, с этими значениями скрипт не работал.

Отправлено: 15:43, 15-03-2010 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Предварительная обработка .flv-файлов в VirtualDub-e для записи на DVD. DJ Mogarych Видео и аудио: обработка и кодирование 18 29-05-2011 02:47
Медиа - Массовая обработка mp3-файлов Nel Программное обеспечение Windows 32 04-02-2010 13:02
[решено] обработка файлов при помощи модуля Excel.au3 SvetlanaK AutoIt 2 09-02-2009 11:41
[решено] Скриптовая обработка файлов dmon_s Программирование в *nix 3 31-08-2007 02:11
отправка клиенту нескольких файлов Andrewkras Вебмастеру 2 19-12-2003 09:10




 
Переход