Войти

Показать полную графическую версию : помогите оптимизировать скрипт


dredre
18-09-2011, 04:39
Написано крайне криво и неграмотно, так как со скриптовым языком я впервые познакомился 4 часа назад. Просьба понимающих в этом, оптимизировать скрипт, чтоб не стыдно было людям показать, так же не помешали бы сообщения на русском и возможность запускать скрипт из директории с русскими буквами.


updater.bat
@Echo off

call :read_settings %~dp0\settings.txt || exit /b 1

echo etkapath : %etkapath%
echo nau : %nau%
echo nse : %nse%
echo nsk : %nsk%
echo nvw : %nvw%

:read_settings

set SETTINGSFILE=%1

rem Проверка существования файла
if not exist %SETTINGSFILE% (
echo FAIL: Файл с настройками отсутствует
exit /b 1
)

for /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
set %%i=%%j
)

Echo AUDI

set m=au
set m2=audi

:label1
set /a nau="%nau%+1"

if exist "%etkapath%\%m%\Update\etup%m%%nau%0.exe" GOTO label1

Set ROOT=%etkapath%\%m%\Update
Set KBFile1=etup%m%%nau%0.exe
Set KB_Url1=http://update1.lex-com.net/update/%m2%/0/etup%m%%nau%0.exe

Call :KB_TEST "%KBFile1%" "%KB_Url1%"
Echo.
pause
EXIT

:KB_TEST
<Nul Set /P $_X="%~1..."

If Exist "%ROOT%\%~1" Echo Ok& Exit /B
<Nul Set /P $_X=Loading

CScript //NoLogo "script.vbs" "%ROOT%\%~1" "%~2"
Set ERR=%ErrorLevel%

<Nul Set /P $_X=
If %ERR% EQU 0 (
Echo Ok
GOTO label1
) Else Echo ERROR

Echo SEAT

set m=se
set m2=seat

:label2
set /a nse="%nse%+1"

if exist "%etkapath%\%m%\Update\etup%m%%nse%0.exe" GOTO label2

Set ROOT=%etkapath%\%m%\Update
Set KBFile1=etup%m%%nse%0.exe
Set KB_Url1=http://update1.lex-com.net/update/%m2%/0/etup%m%%nse%0.exe

Call :KB_TEST "%KBFile1%" "%KB_Url1%"
Echo.
pause
EXIT

:KB_TEST
<Nul Set /P $_X="%~1..."

If Exist "%ROOT%\%~1" Echo Ok& Exit /B
<Nul Set /P $_X=Loading

CScript //NoLogo "script.vbs" "%ROOT%\%~1" "%~2"
Set ERR=%ErrorLevel%

<Nul Set /P $_X=
If %ERR% EQU 0 (
Echo Ok
GOTO label2
) Else Echo ERROR

Echo SKODA

set m=sk
set m2=skoda

:label3
set /a nsk="%nsk%+1"

if exist "%etkapath%\%m%\Update\etup%m%%nsk%0.exe" GOTO label3

Set ROOT=%etkapath%\%m%\Update
Set KBFile1=etup%m%%nsk%0.exe
Set KB_Url1=http://update1.lex-com.net/update/%m2%/0/etup%m%%nsk%0.exe

Call :KB_TEST "%KBFile1%" "%KB_Url1%"
Echo.
pause
EXIT

:KB_TEST
<Nul Set /P $_X="%~1..."

If Exist "%ROOT%\%~1" Echo Ok& Exit /B
<Nul Set /P $_X=Loading

CScript //NoLogo "script.vbs" "%ROOT%\%~1" "%~2"
Set ERR=%ErrorLevel%

<Nul Set /P $_X=
If %ERR% EQU 0 (
Echo Ok
GOTO label3
) Else Echo ERROR

Echo VW

set m=vw
set m2=vw

:label4
set /a nvw="%nvw%+1"

if exist "%etkapath%\%m%\Update\etup%m%%nvw%0.exe" GOTO label4

Set ROOT=%etkapath%\%m%\Update
Set KBFile1=etup%m%%nvw%0.exe
Set KB_Url1=http://update1.lex-com.net/update/%m2%/0/etup%m%%nvw%0.exe

Call :KB_TEST "%KBFile1%" "%KB_Url1%"
Echo.
pause
EXIT

:KB_TEST
<Nul Set /P $_X="%~1..."

If Exist "%ROOT%\%~1" Echo Ok& Exit /B
<Nul Set /P $_X=Loading

CScript //NoLogo "script.vbs" "%ROOT%\%~1" "%~2"
Set ERR=%ErrorLevel%

<Nul Set /P $_X=
If %ERR% EQU 0 (
Echo Ok
GOTO label4
) Else Echo ERROR

Exit /B

pause

script.vbs
If Wscript.Arguments.Count=2 Then
WScript.Quit(HTTPFileGet(Wscript.arguments.Item(1), Wscript.arguments.Item(0)))
Else
WScript.Quit(1)
End If

Function HTTPFileGet(strFileURL, strFileSave)
Dim objXMLHTTP, objADOStream, objFSO
HTTPFileGet = 1

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Set objADOStream = CreateObject("ADODB.Stream")
Set objFSO = Createobject("Scripting.FileSystemObject")

objXMLHTTP.Open "GET", strFileURL, False
objXMLHTTP.Send()

If objXMLHTTP.Status = 200 Then
objADOStream.Open
objADOStream.Type = 1

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0

If objFSO.FileExists(strFileSave) Then objFSO.DeleteFile strFileSave

objADOStream.SaveToFile strFileSave
objADOStream.Close

HTTPFileGet = 0
End If
End Function

settings.txt
etkapath=C:\Program Files\ETKA\VWAU\DATA
nau=842
nse=372
nsk=376
nvw=842

Iska
18-09-2011, 05:10
dredre, для помощников было бы хорошим подспорьем (а для Вас — хорошим тоном) Ваше пояснение на предмет того, что делает (или должен делать) этот набор из пакетного файла и скрипта.




© OSzone.net 2001-2012