CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Аватара пользователя
TupaH

CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение TupaH »

Требуется создать батник, который бы копровал из 3-х папок файлы в 1, записывая в текстовый файл имена скопированых файлов и при следующем запуске не копировал бы их. (папка переодически отчищается другой программой).

Заранее спасибо.
Аватара пользователя
zion87

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение zion87 »

TupaH, можно попробовать вот так(копирует файлы *.ini из каталогов d:\1, d:\2, d:\3 в каталог d:\fin так же ведется отчет о скопированных файлах в report.txt)



Код:

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

@echo off
set put1=d:\1
set put2=d:\2
set put3=d:\3
set finP=d:\fin
set report=d:\report.txt
for /f %%a in (' dir /b %put1%\*.ini ') do if not exist %finP%\%%a echo %%a>>%report% && (
  echo n|copy /-y %put1%\%%a %finP%\
)
for /f %%b in (' dir /b %put2%\*.ini ') do if not exist %finP%\%%b echo %%b>>%report% && (
  echo n|copy /-y %put2%\%%b %finP%\
)
for /f %%c in (' dir /b %put3%\*.ini ') do if not exist %finP%\%%c echo %%c>>%report% && (
  echo n|copy /-y %put3%\%%c %finP%\
)
goto:eof
Аватара пользователя
TupaH

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение TupaH »

Понял проблему, Win2003 у меня инглиш версия и инфу о скопированных файлах он пишет по другому, количество не в конце строки, а в начале, бросаю оба файла, с ХР и 2003. Исправьте плиз, ото как раз эта строчка мне и не понятна, как она убирает текст и оставляет цифру.
Аватара пользователя
Busla

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение Busla »

можно не txt с именами обновлять, а использовать предназначенный специально для этого атрибут файла "archive"
Аватара пользователя
Busla

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение Busla »

Почти то что нужно, только нужно чтобы не копировал уже ранее скопированные файлы. Чтобы проверял проверял в отчете report.txt копировался ли этот файл раньше, если да, то не копировать, если нет, то скопировать. Этот алгоритм если удалить из папки d:\fin уже скопированный файл, копирует его туда опять.
Аватара пользователя
zion87

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение zion87 »

TupaH, я сам слабо разбираюсь во всем этом деле не знаю как сравнить переменную с каждой строчкой из файла, может другие товарищи подскажут... если нет, то смогу предложить то что и я смогу сделать, создать в папке fin директорию temp и создавать там файлы с именами скопированных и размером 0 байт и проверка будет такая:

если файл с таким именем есть в папке d:\fin\temp - есть то копирования не будет...
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение megaloman »

Код:

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

@Echo Off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
Set From="E:\DelTmp\Dir 1" "E:\DelTmp\Dir 2" "E:\DelTmp\Dir 3" 
Set To=E:\DelTmp\Dir 4 
Set LogFile=E:\DelTmp\Log.txt
If Not Exist %LogFile% cd / >%LogFile%
FOR %%d IN (%From%) DO For %%f In ("%%~d\*.*") Do (
   FOR /F "usebackq delims=" %%n IN (`xcopy "%%f" "%To%\" /EXCLUDE:%LogFile% /Q`) DO (
      Set nfil=%%n
      Set nFil=!nFil:~-2!
      If !nFil!==1. Echo %%~nxf>>%LogFile%
   )
)
Аватара пользователя
TupaH

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение TupaH »

Один и тотже батник, в одной и тойже папке на ХР работает, на 2003 нет. Проблема не с доступом, если убираю условие приверки скопирован ли файл
Цитата megaloman:



Set nfil=%%n

Set nFil=!nFil:~-2!

If !nFil!==1.
CMD/BAT - [решено] Создать батник с логом копирования и проверкой.




, то лог пишется все время, был скопирован или нет
Цитата megaloman:



Echo %%~nxf>>%LogFile%
CMD/BAT - [решено] Создать батник с логом копирования и проверкой.




такчто трабл не в путях и не в доступеИзображение

и недо конца поны эти строчки, поясните плиз, особенно 2-я и 3-я


Цитата megaloman:



Set nfil=%%n

Set nFil=!nFil:~-2!

If !nFil!==1.
CMD/BAT - [решено] Создать батник с логом копирования и проверкой.
Аватара пользователя
TupaH

Re: CMD/BAT - [решено] Создать батник с логом копирования и проверкой.

Сообщение TupaH »

Я в недоумении: в Win2003 R2 Enterprise всё чудненько работает. Вот немного изменённый батник

Код:

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

@Echo Off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
Set From="D:\DelTmp\Dir 1" "D:\DelTmp\Dir 2" "D:\DelTmp\Dir 3"
Set To=D:\DelTmp\Dir 4
Set LogFile=D:\DelTmp\Log.txt
If Not Exist %LogFile% cd "%~dp0" >%LogFile%
rem ------------------------------------------
Echo "%From%">kuku
Echo "%To%">>kuku
Echo "%LogFile%">>kuku
rem ------------------------------------------
FOR %%d IN (%From%) DO For %%f In ( "%%~d\*.*" ) Do (
   FOR /F "usebackq delims=" %%n IN (`xcopy "%%f" "%To%\" /EXCLUDE:%LogFile% /Q /Y`) DO (
      Set nfil=%%n
      Set nFil=!nFil:~-2!
rem ------------------------------------------
Echo %%n  !nFil! >>kuku
rem ------------------------------------------
      If !nFil!==1. Echo %%~nxf>>%LogFile%
   )
)

чуть изменил первый If и добавил для надёжности ключ в Xcopy. Плюс наставил отладочный вывод в файл куку который образуется рядом с батником. Я бы хотел увидеть его содержимое.

Для отладки посылаю Вам свою упакованную папку с примером - распакуйте в корень D: с поддиректориями и выполните внутри папки DelTmp имеющийся батник
Ответить

Вернуться в «Скриптовые языки администрирования Windows»