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

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

laipisas02 10-03-2010 15:32 1365284

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

Legat 10-03-2010 17:33 1365410

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

laipisas02 11-03-2010 13:19 1366133

Похоже на правду. С копированием проходит, но как только доходит до строчки 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
)


amel27 11-03-2010 16:57 1366279

Цитата:

Цитата laipisas02
Подскажите где поправить »

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

laipisas02 11-03-2010 19:09 1366402

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

Код:

@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


amel27 12-03-2010 05:30 1366661

Цитата:

Цитата laipisas02
получаю ошибку : A duplicate file name exists, or the file cannot be found. »

нельзя переименовать много файлов (по маске) в один, команда:
Код:

ren ping*.xml ping.xml

laipisas02 12-03-2010 10:29 1366769

Цитата:

Цитата amel27
нельзя переименовать много файлов (по маске) в один, команда: »

а как можно? надо чтобы каждый файл по порядку проходил цикл.

El Sanchez 12-03-2010 21:23 1367316

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

Код:

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


laipisas02 15-03-2010 15:43 1369205

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


Время: 17:18.

Время: 17:18.
© OSzone.net 2001-