2016-07-08 2 views
0

У меня есть пакетный файл в моей сетевой папке, скажем \ Sids \ Awesome \ Network \ Share.bat. У меня есть копии этого файла bat на нескольких компьютерах. Я хочу настроить файл таким образом, что я могу обновить Share.bat на своем общем сетевом ресурсе, а когда я запустил Share.bat на локальном компьютере, он может проверить последнее измененное время для копии в сетевом ресурсе и обновите его самостоятельно. Любые предложения о том, как это сделать?Обновление пакетного файла на основе последней измененной метки времени для файла в сетевом ресурсе

Все мои результаты поиска привели к выполнению своего рода списка каталогов, а затем выбора файла. К сожалению, это невозможно для общего доступа к сети. На данный момент у меня есть работа, написав небольшое приложение на C#, которое вызывается из сценария. Если приложение считает необходимым обновление, оно выходит с ошибкой, и я обновляю скрипт, если приложение вышло с кодом ошибки. Я хотел бы удалить эту зависимость.

ответ

0

Hardcode a номер версии (вторая линия здесь). Получите версию сервера и локальную версию и сравните их. Если номера версий различны, скопируйте файл с сервера и перезапустите его.

@echo off 
REM version=5.1 
for /f "tokens=2 delims==" %%a in ('findstr /b /c:"REM version=" "\\Sids\Awesome\Network\%~nx0"') do set sv=%%a 
for /f "tokens=2 delims==" %%a in ('findstr /b /c:"REM version=" "%~f0"') do set lv=%%a 
echo Server: %sv% 
echo Local: %lv% 
if "%sv%" == "%lv%" goto :continue 
echo updating... 
(xcopy /y "\\Sids\Awesome\Network\%~nx0" >nul || goto :eof) & "%~f0" 
[should never arive at this line] 
:continue 
echo current version. 

вы можете опустить >nul, если вы хотите, чтобы увидеть «1 файл (ы) скопированный» сообщение.

+0

Возможно, вам придется поставить '/ C:' перед поисковой строкой 'findstr', чтобы не иметь двух строк поиска:« REM »и« version = »... – aschipfl

+0

вы можете опустить слово' may' - Я работал с 'find', пока не заметил, что мне нужно'/b' и забыл '/ c', когда переключился на' findstr'. (работал, потому что это была единственная строка «REM» в коде) – Stephan

Смежные вопросы