Привет всем! Есть некий батник(обновление "некой" программы), хотелось его "перевести" на VB, конечно какие то вещи в свое время я делал через shell, но тут свои проблемы. Во-первых, хотелось чтобы была графическая облолочка, да и полоса статуса загрузки бы не помешала на форме. но не суть,с графической стороны вопросов быть и не может. | Код | start /wait wget http://update.drweb.com/xmlzone/release/900/windows/90/av-engine/9/revision.xml if exist revision.xml.bak goto eeex ver|find "5.1"&© /y "%ALLUSERSPROFILE%\Application Data\Doctor Web\Updater\repo\90\av-engine\9\revision.xml" revision.xml.bak ||copy /y "%ALLUSERSPROFILE%\Doctor Web\Updater\repo\90\av-engine\9\revision.xml" revision.xml.bak :eeex if exist revision.xml goto xxxe exit :xxxe setlocal enabledelayedexpansion FOR /F "tokens=2-7 delims== " %%a in ('findstr /C:"lzma" revision.xml') do ( if %%a==name set nam=%%b if %%c==name set nam=%%d if %%e==name set nam=%%f if %%a==hash set has=%%b if %%c==hash set has=%%d if %%e==hash set has=%%f set tmpr=!nam:~8,-1! findstr /C:"!has!" revision.xml.bak>nul||echo !tmpr! )>>bases.txt ENDLOCAL wget -N -i bases.txt -B http://update.drweb.com/xmlzone/release/900/windows/90/av-engine/9/common/ -P bases\ copy /y "%~dp0\drweb32.origin" "%~dp0bases\drweb32.lst" crc32lst.exe -d "%~dp0bases" ver|find "5.1"&&goto xp ||goto seven :xp START /wait %~dp0drwebupw\drwebupw.exe /NI /URM:DISABLE /GO /ST /QU /URL:"%~dp0bases" /DIR:"%ALLUSERSPROFILE%\Application Data\Doctor Web\Updater\repo\90\av-engine\9\common\" copy /y drweb32.origin drweb32.lst CRC32LST.EXE START /wait %~dp0drwebupw\drwebupw.exe /NI /URM:DISABLE /GO /ST /QU /URL:"%~dp0" /DIR:"%ALLUSERSPROFILE%\Application Data\Doctor Web\Updater\repo\90\av-engine\9\" del /q revision.xml revision.xml.bak bases.txt drweb32.lst 3.txt bases\*.* exit :seven START /wait %~dp0drwebupw\drwebupw.exe /NI /URM:DISABLE /GO /ST /QU /URL:"%~dp0bases" /DIR:"%ALLUSERSPROFILE%\Doctor Web\Updater\repo\90\av-engine\9\common\" copy /y drweb32.origin drweb32.lst CRC32LST.EXE START /wait %~dp0drwebupw\drwebupw.exe /NI /URM:DISABLE /GO /ST /QU /URL:"%~dp0" /DIR:"%ALLUSERSPROFILE%\Doctor Web\Updater\repo\90\av-engine\9\" del /q revision.xml revision.xml.bak bases.txt drweb32.lst 3.txt bases\*.* "c:\Program Files\DrWeb\drwupsrv.exe" -xno --type=update-revision exit
|
Скачку файлов через wget.exe, я заменил кодом и вопросов к нему нет, все работает, так же как и уловности батника... | Код | Option Explicit Private Declare Function URLDownloadToFile Lib "urlmon" Alias _ "URLDownloadToFileA" (ByVal pCaller As Long, _ ByVal szURL As String, ByVal szFileName As String, _ ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long Public Event ErrorDownload(FromPathName As String, ToPathName As String) Public Event DownloadComplete(FromPathName As String, ToPathName As String) Public Function DownloadFile(FromPathName As String, ToPathName As String) If URLDownloadToFile(0, FromPathName, ToPathName, 0, 0) = 0 Then DownloadFile = True RaiseEvent DownloadComplete(FromPathName, ToPathName) Else DownloadFile = False RaiseEvent ErrorDownload(FromPathName, ToPathName) End If End Function
Private Sub Command1_Click() Call DownloadFile("адрес+имяфайла", "имяфайла") 'скачиваем имяфайла End Sub
|
Но возникли вопросы в строках... | Код | ver|find "5.1"&© /y "%ALLUSERSPROFILE%\Application Data\Doctor Web\Updater\repo\90\av-engine\9\revision.xml" revision.xml.bak ||copy /y "%ALLUSERSPROFILE%\Doctor Web\Updater\repo\90\av-engine\9\revision.xml" revision.xml.bak
|
и еще больше в ступор меня ввело следующее | Код | setlocal enabledelayedexpansion FOR /F "tokens=2-7 delims== " %%a in ('findstr /C:"lzma" revision.xml') do ( if %%a==name set nam=%%b if %%c==name set nam=%%d if %%e==name set nam=%%f if %%a==hash set has=%%b if %%c==hash set has=%%d if %%e==hash set has=%%f set tmpr=!nam:~8,-1! findstr /C:"!has!" revision.xml.bak>nul||echo !tmpr! )>>bases.txt ENDLOCAL
|
Так вот...предложите хотябы мысли как это можно сделать?!
|