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

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

Ответить
Настройки темы
Любой язык - [решено] Копирование файлов

Старожил


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

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


Добрый день. Подскажите пожалуйста по такому вопросу - Есть файлы acp00000NNN, где NN номер по порядку. Каждый день с утра данные файлы, начиная с порядкового номера 01, начинают падать в папку C:/111/. Из этой папки их нужно скопировать в папку C:/222/ где их подхватывает другая программа и переносит к себе, т.е. после того как программа их подхватила данных файлов в папке 222 нет. Вопрос заключается в том, что из папки 111 нужно копировать только свежий, т.е. только что пришедший файл, а те которые были скопированы ранее не трогать.

Как возможно сделать подобное копирование средствами cmd или vbs, на крайний случай powershell

Отправлено: 15:57, 21-03-2013

 

Ветеран


Contributor


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

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


Цитата:
что с утра программа предыдущий день архивирует
Какие имена файлов архивирует? Почему бы не заархивировать и лог? Кстати, лог-файл можно назвать acp00000LOG, и если у архиватора маска подходящая, никаких дополнительно действий не надо. По дате лог сделать тоже не проблема, но это стрёмно.
Вот вариант, где лог-файл по дате в, например, корне диска E:\
Код: Выделить весь код
@Echo Off
Set Otkuda=E:\111\
Set Kuda=E:\222\

Set Log=E:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log

If Not Exist %Log% (
	Echo %Log%>>%Log%
)

FOR /F "usebackq delims=" %%f IN (`xcopy %Otkuda%*.* %Kuda%  /Y /EXCLUDE:%Log%`) DO (
	If Exist "%%f" Echo %%f>>%Log%
)
Чтобы вернуться к предыдущему способу, замените одну строку с определением Log

Set Log=%Otkuda%%0.log

Или если делать лог-файл с именем E:\111\acp00000log. то заменить такой строкой

Set Log=%Otkuda%acp00000log.

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


Последний раз редактировалось megaloman, 25-03-2013 в 12:09. Причина: Исправлено %0.log на %~nx0.log для обеспечения работоспособности, если батник запускается не из текущей директории

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

Отправлено: 17:04, 22-03-2013 | #11



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

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


Старожил


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

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


Огромное спасибо !!!

Отправлено: 10:31, 23-03-2013 | #12


Старожил


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

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


Вышел на работу, попробовал скрипт:

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" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Отправлено: 11:34, 25-03-2013 | #13


Ветеран


Contributor


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

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


Цитата:
Set Log=c:\20130325_"C:\test.bat".log
-откуда здесь кавычки?
У меня 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
ИМХО, этот стандартный путь должен присутствовать в системе в переменных среды.

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


Последний раз редактировалось megaloman, 25-03-2013 в 12:20.

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

Отправлено: 12:04, 25-03-2013 | #14


Аватара для gora

Ушёл из жизни


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

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


Цитата megaloman:
-откуда здесь кавычки?
У меня Set Log=C:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%0.log»
Коллега, они у Вас в строке прописаны. Тильду забыли после процента в переменной %0 поставить, вот они и вылезли.
Попробуйте так:
Код: Выделить весь код
Set Log="E:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log"
Ибо имя батника может содержать пробел.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:15, 25-03-2013 | #15


Ветеран


Contributor


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

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


gora, %0 кавычки не возвращает.

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


Отправлено: 13:49, 25-03-2013 | #16


Аватара для gora

Ушёл из жизни


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

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


Цитата megaloman:
%0 кавычки не возвращает »
Батник Обрезка переменных.bat:
Код: Выделить весь код
@Echo Off
:: Кодировка файла 'Кирилица DOS' (866)
Echo Запись	Значение
Echo.
Echo %%0	%0
Echo %%~0	%~0
Pause>Nul
Вывод в окно консоли:
Код: Выделить весь код
Запись  Значение

%0      "E:\Temp\Обрезка переменных.bat"
%~0     E:\Temp\Обрезка переменных.bat
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:05, 25-03-2013 | #17


Старожил


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

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


со всем разобрался, всем спасибо!!!

Отправлено: 15:25, 25-03-2013 | #18


Ветеран


Contributor


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

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


gora, Насчёт кавычек %0 я погорячился, но с кавычками у меня другая проблема, в xcopy в ключе /EXCLUDE: мне не удавалось пользоваться файлом, имя которого в кавычках.

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


Отправлено: 16:16, 25-03-2013 | #19


Аватара для gora

Ушёл из жизни


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

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


Цитата megaloman:
с кавычками у меня другая проблема, в xcopy в ключе /EXCLUDE: мне не удавалось пользоваться файлом, имя которого в кавычках. »
Там кавычки не используются (не возможно использовать).
Можно обойти так:
Код: Выделить весь код
Set Log="E:\%Date:~6,4%%Date:~3,2%%Date:~0,2%_%~nx0.log"
For %%i In (%Log%) Do Set shortpathlog=%%~si

...
FOR /F "usebackq delims=" %%f IN (`xcopy %Otkuda%*.* %Kuda%  /Y /EXCLUDE:%shortpathlog%`) DO (
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:53, 25-03-2013 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Копирование файлов Brard Накопители (SSD, HDD, USB Flash) 0 18-10-2011 17:26
копирование файлов и запуск e9990638 Хочу все знать 0 04-04-2011 11:28
CMD/BAT - Копирование новых файлов Доктор Ливси Скриптовые языки администрирования Windows 1 08-11-2010 12:37
CMD/BAT - Копирование файлов LightZone Скриптовые языки администрирования Windows 4 13-10-2010 13:33
[решено] Копирование файлов AlexM AutoIt 5 03-05-2010 23:43




 
Переход