Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Сравнения двух чисел в двух файлах. (http://forum.oszone.net/showthread.php?t=281109)

angel_lyucifer 18-04-2014 21:55 2340228

Сравнения двух чисел в двух файлах.
 
Всем привет, помогите пожалуйста создать скрипт.
У меня есть два файла Download.txt и local.txt они расположены в одной папки и в них есть такие строки:
В файле Download.txt написано //Version 6.0
В файле local.txt написано //Version 5.0
В этих файлах число меняется но всегда в файле Download.txt число больше чем в файле local.txt.
Мне нужно что бы когда число в файле Download.txt больше чем в файле local.txt то надо запустить 1.ехе если числа в этих файлах одинаковые то надо запустить 2.ехе.

Iska 18-04-2014 22:01 2340229

angel_lyucifer, и больше ничего в этих файлах не написано?

angel_lyucifer 19-04-2014 19:41 2340632

Цитата:

Цитата Iska
и больше ничего в этих файлах не написано? »

Я извиняюсь, забыл написать!
В файле local.txt написано много чего, в файле Download.txt написано кроме версии, адрес загрузки.

Iska 20-04-2014 07:00 2340767

angel_lyucifer, можете упаковать оба файла в один архив и выложить?

angel_lyucifer 20-04-2014 15:01 2340881

Цитата:

Цитата Iska
можете упаковать оба файла в один архив и выложить? »

Вот.. http://my-angel.ucoz.com/1.zip

Iska 20-04-2014 15:20 2340883

Примерно так (сравнение только по старшему номеру версии):
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sLocalFile=local.txt
set sRemoteFile=Download.txt

set sProgramForRemoteVersionGreaterThanLocalVersion=1.exe
set sProgramForRemoteVersionIsEqualLocalVersion=2.exe

if exist "%sLocalFile%" (
        if exist "%sRemoteFile%" (
                for /f "usebackq tokens=2 delims=. " %%i in (
                        `type "%sLocalFile%" ^| findstr.exe /r /i /c:"//Version .\.." 2^>nul`
                ) do set /a iLocalVersion = %%i
               
                for /f "usebackq tokens=2 delims=. " %%i in (
                        `type "%sRemoteFile%" ^| findstr.exe /r /i /c:"//Version .\.." 2^>nul`
                ) do set /a iRemoteVersion = %%i
               
                if defined iLocalVersion if defined iRemoteVersion (
                       
                        if !iRemoteVersion! gtr !iLocalVersion! (
                                if exist "%sProgramForRemoteVersionGreaterThanLocalVersion%" (
                                        "%sProgramForRemoteVersionGreaterThanLocalVersion%"
                                ) else (
                                        echo Not found [%sProgramForRemoteVersionGreaterThanLocalVersion%].
                                        exit /b 3
                                )
                        ) else if !iRemoteVersion! equ !iLocalVersion! (
                                if exist "%sProgramForRemoteVersionIsEqualLocalVersion%" (
                                        "%sProgramForRemoteVersionIsEqualLocalVersion%"
                                ) else (
                                        echo Not found [%sProgramForRemoteVersionIsEqualLocalVersion%].
                                        exit /b 4
                                )
                        ) else (
                                rem !iRemoteVersion! lss !iLocalVersion!
                                rem Nothing to do
                        )
                )
        ) else (
                echo Remote file [%sRemoteFile%] not found.
                exit /b 2
        )
) else (
        echo Local file [%sLocalFile%] not found.
        exit /b 1
)

endlocal
exit /b 0


angel_lyucifer 28-04-2014 16:56 2344180

Спасибо!


Время: 02:00.

Время: 02:00.
© OSzone.net 2001-