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

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

Ответить
Настройки темы
CMD/BAT - [решено] Проверка выполнения xcopy

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


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

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


Изменения
Автор: Sat_Kelman
Дата: 31-03-2011
День добрый!

Существует батник с такой строкой
Код: Выделить весь код
xcopy /d /v /y /z "*.dpr" "\\serv\programs\All" >> %~n0.log
копирует с заменой на более новые файлы *.dpr в общую папку и записывает результат в лог.

Появилась необходимость совершить еще пару действий, но если файлы были скопированы.
Если ничего не копировалось то завершить батник.

Есть еще вариант, который меня очень устроит. Пока сделал так чтоб результат писал во временный файл tmp.log, содержимое которого потом добавляется в %~n0.log.
Если файлы не скопированы то в tmp.log будет запись "скопировано файлов 0" и размер файла получается 24 байта.
Вопрос - как проверить размер файла.
Что-то типа if размер tmp.log = 24 goto end
Есть какие команды на проверку размера файла?

Отправлено: 10:35, 31-03-2011

 

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

Ветеран


Contributor


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

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


Sat_Kelman,
Код: Выделить весь код
xcopy /d /v /y /z "*.dpr" "\\serv\programs\All"|find ": 0."&&exit /b 0
:: еще пара действий
...
Или лог-файл все же необходим?

Отправлено: 16:42, 31-03-2011 | #2



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

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


Ветеран


Contributor


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

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


Вот вариант с лог-файлом. Способ не универсальный, особенно если язык не русский. Тогда надо правильно прописать ключевое слово, здесь это
Скопировано файлов: 0.
Как вариант, можно смотреть последние 4 символа, но я это не сделал, мне кажется, это не надёжнее
Код: Выделить весь код
cls
@Echo Off
Set Otkuda="*.dpr"
Set Kuda="\\serv\programs\All"
Set Slovo="Скопировано файлов: 0."

Echo ------- %Date%   %Time% ------- >>%~n0.log
Set L=True
FOR /F "usebackq delims=" %%i IN (`XCOPY /d /s %Otkuda% %Kuda%`) DO Call :LogFile "%%i"
If %L%==False GoTo :Eof

rem Здесь делаем нечто в случае если файлы скопированы
rem --------------------------------------------------
Echo Файлы скопированы
rem --------------------------------------------------
GoTo :Eof

:LogFile
Echo %~1 >>%~n0.log
If %1==%Slovo% Set L=False
При работе xcopy возможна еще неприятность: а что делать, если какой-то файл не скопировался, например, был занят? (кстати, неплохо бы еще добавить ключ /C в Xcopy). При этом %Errorlevel% NEQ 0
Здесь эта ситуация не учтена

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


Последний раз редактировалось megaloman, 31-03-2011 в 20:13.


Отправлено: 20:02, 31-03-2011 | #3


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


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

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


Спасибо за советы, сделал вот так
Код: Выделить весь код
echo %date% %time% %username% %computername% >> %~n0.log
 
rem копирует новые файлы на общий ресурс и записывает результат во временный файл 
xcopy /d /v /y /z "*.dpr" "\\serv\programs\All" > tmp.log
 
rem добавляет результат в общий лог 
1>>%~n0.log type tmp.log
 
rem проверяет наличие строки о количестве скопированных файлов и если находит строку "Скопировано файлов: 0." то идет на выход
For /F "usebackq delims=" %%i in (tmp.log) do if "%%i"=="Скопировано файлов: 0." goto end

Отправлено: 08:12, 01-04-2011 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Проверка на выполнения команд в bat ? men232 Скриптовые языки администрирования Windows 4 12-01-2011 22:23
[решено] Проверка выполнения нескольких условий Smokie_id11243755 AutoIt 6 05-09-2010 07:19
CMD/BAT - [решено] нельзя назвать батник делающий xcopy, xcopy.bat почему ? foxbat Скриптовые языки администрирования Windows 3 17-09-2009 05:33
В XCOPY не работает EXCLUDE AlexKKK Microsoft Windows NT/2000/2003 3 15-02-2008 14:52
[решено] использование команды xcopy maslinaV Хочу все знать 3 29-06-2006 19:45




 
Переход