![]() |
Нужно объединить два батника в один
Не знаю, как объединить эти батники.
При запуске их по отдельности они работают. Но когда попытался вставить один в другой не редактируя, то часть задания не выполнялась. Этот создаёт временный .vbs, который запускает этот же батник от имени Администратора, а вторая часть этого батника перемещает файл настроек prefs.xml в нужную папку и самоудаляется после выполнения: Скрытый текст
@Echo Off
ver |>NUL find /v "5." && if "%~1"=="" ( Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs" cscript.exe //nologo "%~dp0Elevating.vbs" "%~f0"& goto :eof ) if not exist "%AppData%\Geek Uninstaller\*.*" (md "%AppData%\Geek Uninstaller") move "prefs.xml" "%AppData%\Geek Uninstaller\prefs.xml" del /f /q "%systemdrive%\Program Files\Geek Uninstaller\Elevating.vbs" del "%~f0" Этот вносит внесения изменений в hosts: Скрытый текст
@Echo Off
cls Set "File=hosts." Set "Folder=%windir%\system32\drivers\etc" Pushd "%Folder%"||(Pause &Exit /B 2) Set "@Add001=127.0.0.1 geekuninstaller.com" Attrib -R -S -H "%File%" Set /A NOld=1000 FOR /F "usebackq delims=" %%s IN ("%File%") DO (Set /A NOld+=1 &Call Set "@Old%%NOld%%=%%s") FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@Add"`) DO (Set /A NOld+=1 &Call Set "@Old%%NOld%%=%%j") FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@Old"`) DO (Set "SS=%%j" &Call Set "@%%i=%%SS: =%%") >"%File%" (FOR /L %%i IN (1001,1,%NOld%) DO Call :Anal %%i) attrib +R "%File%" Popd GoTo :Eof :Anal Call Set "A=%%@@Old%1%%" If /I "%A%"=="" Exit /B 1 If "%A:~0,1%"=="#" (Call Echo %%@Old%1%%&Exit /B 0) (Call Echo %%@Old%1%%) FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@@Old"`) DO If /I "%%j"=="%A%" Call Set "%%i=" Exit /B 0 В итоге должно получиться вот,что. Батник запускает сам себя от имени администратора, далее перемещает файл в нужную папку, далее вносит изменения в hosts и в завершении самоудаляется. |
Не лучшая практика запускать батник самим собой и и заставлять его удалять себя собой же. Это значит раз.
И еще этот батник (или батники?) здорово смахивает на нарушающий пункт 3.18 правил. Это значит два. |
Цитата:
Цитата:
Перемещение файла настроек программы prefs.xml в папку в которой они и должны находиться? Внесение изменений в hosts? Если объединить эти файлы невозможно, то скажите почему? Я в этом не разбираюсь, а если просто скопировать код из одного в другой, то происходит циклический запуск-остановка .cmd окна, при запуске его из Program Files. Если запускать его с Рабочего стола, то он запускается нормально. |
Тема закрыта.
Решил задачу сам. Если кому будет интересно, вот что получилось: Скрытый текст
Код:
@Echo Off Батник создавался для запуска в папке Program Files, по команде Setup из SFX инсталлятора WinRar. |
Время: 11:18. |
Время: 11:18.
© OSzone.net 2001-