CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Ответить
Аватара пользователя
hant

CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Сообщение hant »

есть сетевая папка update там находяться самораспаковывающиеся архивы:

update1.0.1, update1.0.2, update1.0.3, update1.0.4.

есть программа, в корневом каталоге проги папка version, там файл version.inf содержание которого всего одна строка Version=1.0.2 содержимое которой будет меняться взависимости какой патч установлен.

подскажите как реализовать скачивание только архива который выше версией указаной в version.inf.

т.е. update1.0.3, затем если нет архива выше версии то вывести сообщение что обновлений нет.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Сообщение amel27 »

как-то так:



Код:

Код: Выделить всё

@echo off
SETLOCAL EnableDelayedExpansion
set "MyProgPath=c:\Program Files\My Program"
set "RemotePath=\\MyServer\Share"
for /f "usebackq tokens=2-4 delims==. " %%a in ("%MyProgPath%\version.inf") do (
  set "$b=0%%b"& set "$c=0%%c"& set "$v=%%a!$b:~-2!!$c:~-2!"
)
for /f "tokens=1-3 delims=update." %%a in ('dir /b/a-d "%RemotePath%\update*.exe"') do (
  set "$b=0%%b"& set "$c=0%%c"& set "$n=%%a!$b:~-2!!$c:~-2!"
  if !$n! gtr !$v! copy /b/y/v/z "%RemotePath%\update%%a.%%b.%%c.exe" "%MyProgPath%\"
)
Аватара пользователя
hant

Re: CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Сообщение hant »

Спасибо! работает, но скачивает все файлы выше версией, а хотелось бы реализовать так чтобы только один файл который выше версией.

т.е. версия проги 1.0.2 , и надо скачать файл update1.0.3

если не трудно подскажите что подправить в коде надо.

заранее благодарю!
Аватара пользователя
hant

Re: CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Сообщение hant »

Цитата hant:



хотелось бы реализовать так чтобы только один файл который выше версией
CMD/BAT - [решено] проверка версии и скачивание более нового апдейта






Код:

Код: Выделить всё

@echo off
SETLOCAL EnableDelayedExpansion
set "MyProgPath=c:\Program Files\My Program"
set "RemotePath=\\MyServer\Share"
for /f "usebackq tokens=2-4 delims==. " %%a in ("%MyProgPath%\version.inf") do (
  set "$b=0%%b"& set "$c=0%%c"& set "$v=%%a!$b:~-2!!$c:~-2!"
)& set "$m=999999"& set "$f="
for /f "tokens=1-3 delims=update." %%a in ('dir /b/a-d "%RemotePath%\update*.exe"') do (
  set "$b=0%%b"& set "$c=0%%c"& set "$n=%%a!$b:~-2!!$c:~-2!"
  if !$n! gtr !$v! if !$n! lss !$m! set "$m=!$n!"& set "$f=update%%a.%%b.%%c.exe"
)
if defined $f copy /b/y/v/z "%RemotePath%\!$f!" "%MyProgPath%\"
Аватара пользователя
hant

Re: CMD/BAT - [решено] проверка версии и скачивание более нового апдейта

Сообщение hant »

Огромное спасибо!!! весьма признателен Вам за Вашу помошь!

Все работает!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»