Major_XXXX |
07-06-2013 11:21 2163659 |
Нужна помощь в сравнении файлов и копировании
Доброго времени суток. Подскажите пожалуйста, как правильно написать BAT файл, который должен выполнять такую работу:
Проверить exe на локальном ПК и сравнить его с exe который находится на сервере (в локальной сети). Если файлы не идентичны (не важно что будет сравниваться, для примера, пусть сравнивает размер экзешников) - скопировать всю папку с сервера, на локальный комп с заменой файлов
P.S. может есть такая тема, но не нашел её на форуме. Пожалуйста помогите
|
Major_XXXX |
07-06-2013 11:33 2163671 |
А если EXE на ПК и на сервере идентичны - то необходимо запустить exe с локальной машины
|
Цитата:
Цитата Major_XXXX
А если EXE на ПК и на сервере идентичны - то необходимо запустить exe с локальной машины »
|
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=procexp.exe
set sLocalPath=%ProgramFiles%\Sysinternals.com\Sysinternals Suite
set sRemotePath=\\live.sysinternals.com\tools
if exist "%sLocalPath%\%sFileName%" (
if exist "%sRemotePath%\%sFileName%" (
1>nul 2>&1 fc.exe /b "%sLocalPath%\%sFileName%" "%sRemotePath%\%sFileName%" && (
"%sLocalPath%\%sFileName%"
) || (
xcopy.exe /e /f /h /r /k /y /z "%sRemotePath%\*.*" "%sLocalPath%\*.*"
)
) else (
echo Can't find remote file [%sRemotePath%\%sFileName%].
)
) else (
echo Can't find local file [%sLocalPath%\%sFileName%].
)
endlocal
exit /b 0
|
Major_XXXX |
07-06-2013 11:54 2163686 |
Подскажите пожалуйста, а где он тут сравнивает файлы?
|
Цитата:
Цитата Major_XXXX
а где он тут сравнивает файлы? »
|
Цитата:
Цитата Iska
Код:
… fc.exe /b "%sLocalPath%\%sFileName%" "%sRemotePath%\%sFileName%" …
»
|
|
Major_XXXX |
07-06-2013 12:03 2163695 |
Can't find remote file [\\******\*****\**\**\***.exe]
Хотя файл там есть... что может быть?
С этим разобрался, скобочки забыл поставить.
Файлы оно сравнило, скопировало, но запуск exe с локального ПК не происходит...
|
Цитата:
Цитата Major_XXXX
Can't find remote file [\\******\*****\**\**\***.exe]
Хотя файл там есть... что может быть?
С этим разобрался, скобочки забыл поставить. »
|
Какие скобки?
Цитата:
Цитата Major_XXXX
Файлы оно сравнило, скопировало, но запуск exe с локального ПК не происходит... »
|
Так и не должен. Вы как сказали?
Цитата:
Цитата Major_XXXX
если EXE на ПК и на сервере идентичны - то необходимо запустить exe »
|
Так и было сделано: если идентичны — происходит запуск. Всё в рамках ТЗ ;). Не более.
Если думалось одно, а писалось другое, и требуется безусловный запуск приложения, то так:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=procexp.exe
set sLocalPath=%ProgramFiles%\Sysinternals.com\Sysinternals Suite
set sRemotePath=\\live.sysinternals.com\tools
if exist "%sLocalPath%\%sFileName%" (
if exist "%sRemotePath%\%sFileName%" (
1>nul 2>&1 fc.exe /b "%sLocalPath%\%sFileName%" "%sRemotePath%\%sFileName%" || (
xcopy.exe /e /f /h /r /k /y /z "%sRemotePath%\*.*" "%sLocalPath%\*.*"
)
) else (
echo Can't find remote file [%sRemotePath%\%sFileName%].
)
"%sLocalPath%\%sFileName%"
) else (
echo Can't find local file [%sLocalPath%\%sFileName%].
)
endlocal
exit /b 0
|
Major_XXXX |
07-06-2013 15:20 2163850 |
Попробую рассказать ещё раз) может действительно неправильно выразил свою мысль.
есть (к примеру) 5 компов. на них установлен софт. и на сервере установлен тот же софт, в отдельную папку.
для того, чтобы не приходилось при обновлении софта инсталлировать на каждом ПК, необходим батник, который будет сверять версию exe файла на локальной машине, с той версией что установлена на сервере.
если на сервере установлена (распакована) более свежая версия:
по средствам батника (запуска у конечного пользователя) происходит следующее, копируются все файлы и папки с сервера на локальный комп, и запускается exe. если в результате сверки версий различий нету - ничего не копируется с сервера, и запускается всё тот же exe с локального компа
|
Major_XXXX |
07-06-2013 15:47 2163863 |
То есть, с локального компа, должна быть запущена актуальная (последняя) версия exe.
|
Major_XXXX |
07-06-2013 16:29 2163892 |
:( не стартует exe. пишет ошибку что ему не хватает ini файла. хотя он есть, и при запуске не через этот батник, прекрасно стартует
|
Major_XXXX, скорее всего, приложение так криво написано, что ему критичен текущий каталог при запуске.
Два варианта:
читать дальше »
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=procexp.exe
set sLocalPath=%ProgramFiles%\Sysinternals.com\Sysinternals Suite
set sRemotePath=\\live.sysinternals.com\tools
if exist "%sLocalPath%\%sFileName%" (
if exist "%sRemotePath%\%sFileName%" (
1>nul 2>&1 fc.exe /b "%sLocalPath%\%sFileName%" "%sRemotePath%\%sFileName%" || (
xcopy.exe /e /f /h /r /k /y /z "%sRemotePath%\*.*" "%sLocalPath%\*.*"
)
) else (
echo Can't find remote file [%sRemotePath%\%sFileName%].
)
pushd ""%sLocalPath%"
"%sLocalPath%\%sFileName%"
popd
) else (
echo Can't find local file [%sLocalPath%\%sFileName%].
)
endlocal
exit /b 0
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileName=procexp.exe
set sLocalPath=%ProgramFiles%\Sysinternals.com\Sysinternals Suite
set sRemotePath=\\live.sysinternals.com\tools
if exist "%sLocalPath%\%sFileName%" (
if exist "%sRemotePath%\%sFileName%" (
1>nul 2>&1 fc.exe /b "%sLocalPath%\%sFileName%" "%sRemotePath%\%sFileName%" || (
xcopy.exe /e /f /h /r /k /y /z "%sRemotePath%\*.*" "%sLocalPath%\*.*"
)
) else (
echo Can't find remote file [%sRemotePath%\%sFileName%].
)
start "" /d"%sLocalPath%" "%sLocalPath%\%sFileName%"
) else (
echo Can't find local file [%sLocalPath%\%sFileName%].
)
endlocal
exit /b 0
Иначе, пишите как именно:
Цитата:
Цитата Major_XXXX
не через этот батник, прекрасно стартует »
|
сие осуществляете.
|
Major_XXXX |
07-06-2013 17:22 2163933 |
Огромное Вам спасибо!!! Второй вариант запустил и сделал всё что было необходимо! :rupor:
|
Major_XXXX, а первый вариант пробовали?
|
Major_XXXX |
07-06-2013 17:31 2163941 |
:) я если честно, начал со второго. сейчас попробовал и первый. тоже работает. а в чем отличие?)
|
В использованных командах. Они выделены цветом в приведённом выше коде.
|
Время: 16:59.
© OSzone.net 2001-