![]() |
Копирование файлов
Добрый день. Подскажите пожалуйста по такому вопросу - Есть файлы acp00000NNN, где NN номер по порядку. Каждый день с утра данные файлы, начиная с порядкового номера 01, начинают падать в папку C:/111/. Из этой папки их нужно скопировать в папку C:/222/ где их подхватывает другая программа и переносит к себе, т.е. после того как программа их подхватила данных файлов в папке 222 нет. Вопрос заключается в том, что из папки 111 нужно копировать только свежий, т.е. только что пришедший файл, а те которые были скопированы ранее не трогать.
Как возможно сделать подобное копирование средствами cmd или vbs, на крайний случай powershell |
да, старые, за вчерашний день удаляются, но в течение дня нет
|
Цитата:
С файлом для записи последнего номера Код:
@echo off |
работает практически идеально, вот только если после первого файла сразу пришло еще два, то он при запуске батника кинет только один файл и только при следующем запуске второй. Как сделать так, чтобы кидались сразу несколько файлов ?
|
Код:
@Echo Off |
лог лучше делать по дате, потому как папка 111 очищается другой программой, которая архивирует файлы acp каждое утро
|
Цитата:
|
просто получается, что с утра программа предыдущий день архивирует, а этот лог тогда руками нужно очищать, либо отдельным батником
|
все acp00000NNN, и отображает их в самой программе в меню архив (т.е. не просто складывает в папку, а учитывается в самой программе), я не знаю как она отреагирует на появление log файла, поэтому так даже боязнее чем лог по дате
|
Цитата:
Код:
@echo off |
Цитата:
Вот вариант, где лог-файл по дате в, например, корне диска E:\ Код:
@Echo Off Set Log=%Otkuda%%0.log Или если делать лог-файл с именем E:\111\acp00000log. то заменить такой строкой Set Log=%Otkuda%acp00000log. |
Огромное спасибо !!!
|
Вышел на работу, попробовал скрипт:
C:\>Set Otkuda=c:\111\ C:\>Set Kuda=c:\222\ C:\>Set Log=c:\20130325_"C:\test.bat".log C:\>If Not Exist c:\20130325_"C:\test.bat".log (Echo c:\20130325_"C:\test.bat".l og 1>>c:\20130325_"C:\test.bat".log ) Синтаксическая ошибка в имени файла, имени папки или метке тома. C:\>pause Для продолжения нажмите любую клавишу . . . C:\>FOR /F "usebackq delims=" %f IN (`xcopy c:\111\*.* c:\222\ /Y /EXCLUDE: c:\20130325_"C:\test.bat".log`) DO (If Exist "%f" Echo %f 1>>c:\20130325_"C:\tes t.bat".log ) "xcopy" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
Цитата:
У меня Set Log=C:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%0.log - то есть файл сегодня автоматически создастся с именем C:\20130325_nameofbat.bat.log - где nameofbat.bat наименование батника (не делайте его с пробелами или на русском языке), т е имя в Вашем случае будет C:\20130325_test.bat.log Во вторых, если батник запускаете не из текущей директории (что, судя по примеру, и произошло), то сделайте Set Log=C:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log В третих, если батник запускаете из командного окна, попробуйте выполнить ручками предварительно команды xcopy /? Если она выполнится успешно, батник будет работать, иначе проблемы не в батнике Можно тогда попробовать команду Path, среди доступных путей должно быть C:\Windows\system32; иначе система не находит файл xcopy.exe ИМХО, этот стандартный путь должен присутствовать в системе в переменных среды. |
Цитата:
Попробуйте так: Код:
Set Log="E:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log" |
gora, %0 кавычки не возвращает.
|
Цитата:
Код:
@Echo Off Код:
Запись Значение |
со всем разобрался, всем спасибо!!!
|
gora, Насчёт кавычек %0 я погорячился, но с кавычками у меня другая проблема, в xcopy в ключе /EXCLUDE: мне не удавалось пользоваться файлом, имя которого в кавычках.
|
Цитата:
Можно обойти так: Код:
Set Log="E:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log" |
Новогодний заклин. :lamer: Не получается скопировать скрытые файлы из одной директории в другую. Пишет - не найден файл
Код:
@echo off |
Цитата:
|
Время: 11:31. |
Время: 11:31.
© OSzone.net 2001-