![]() |
Убрать/Заменить с батника %~dp0
Здравствуйте!
Есть батник, который выдает в текстовом файле ид установки Office Но проблема в том что, он работает только при запуске на рабочем столе Windows В другой любой папке он не работает Подозреваю строку %~dp0 в начале выводимого/создаваемого txt файла %~dp0IID.txt Что надо еще добавить или убрать, чтоб батник работал в любой другой папке как и на рабочем столе? Если есть возможность убрать или заменить строку %~dp0, было бы еще лучше! Батник
@echo off
for /d %%a in (4,5,6) do call :path "%%a" start %~dp0IID.txt timeout 2 >nul del /f %~dp0IID.txt exit :path if exist "C:\Program Files\Microsoft Office\Office1%~1\ospp.vbs" ( cd /d "C:\Program Files\Microsoft Office\Office1%~1" & call :getIID "%~1") if exist "C:\Program Files (x86)\Microsoft Office\Office1%~1\ospp.vbs" ( cd /d "C:\Program Files (x86)\Microsoft Office\Office1%~1" & call :getIID "%~1") exit /b :getIID for /f "tokens=4-8 delims=:, " %%b in ('cscript //nologo ospp.vbs /dinstID ^| findstr /i "Installation ID"') do ( set ID=%%f if %~1 EQU 4 ( set ID1=!ID:~0,6!& set ID2=!ID:~6,6!& set ID3=!ID:~12,6!& set ID4=!ID:~18,6!& set ID5=!ID:~24,6!& set ID6=!ID:~30,6!& set ID7=!ID:~36,6!& set ID8=!ID:~42,6!& set ID9=!ID:~48,6! (echo %%b %%c, %%d & echo.Installation ID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!&echo.) >>%~dp0IID.txt) else ( set ID1=!ID:~0,7!& set ID2=!ID:~7,7!& set ID3=!ID:~14,7!& set ID4=!ID:~21,7!& set ID5=!ID:~28,7!& set ID6=!ID:~35,7!& set ID7=!ID:~42,7!& set ID8=!ID:~49,7!& set ID9=!ID:~56,7! (echo %%b %%c, %%d & echo.Installation ID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!&echo.) >>%~dp0IID.txt) ) exit /b |
Цитата:
Цитата:
Скрытый текст
Код:
@echo off |
Цитата:
А на рабочем столе создается и со всем содержимым |
Гена829999, не пробовали в сценарии включать расширенную обработку команд?
|
Гена829999, попробуйте так, ниже Ваш код чуть подправленный, при это уверен, что специалисты предложат оптимальный:
Скрытый текст
Код:
@echo off |
|
Цитата:
|
Цитата:
|
Цитата:
Полученный Код Сценария
for /d %%a in (4,5,6) do call :path "%%a"
start "" "%~dp0IID.txt" timeout 2 >nul REM del /f "%~dp0IID.txt" Exit :path if exist "C:\Program Files\Microsoft Office\Office1%~1\ospp.vbs" ( cd /d "C:\Program Files\Microsoft Office\Office1%~1" & call :getIID "%~1") if exist "C:\Program Files (x86)\Microsoft Office\Office1%~1\ospp.vbs" ( cd /d "C:\Program Files (x86)\Microsoft Office\Office1%~1" & call :getIID "%~1") Exit /B :getIID SetLocal EnableDelayedExpansion for /f "tokens=4-8 delims=:, " %%b in ('cscript //nologo ospp.vbs /dinstID ^| findstr /i "Installation ID"') do ( set ID=%%f if %~1 EQU 4 ( set ID1=!ID:~0,6!& set ID2=!ID:~6,6!& set ID3=!ID:~12,6!& set ID4=!ID:~18,6!& set ID5=!ID:~24,6!& set ID6=!ID:~30,6!& set ID7=!ID:~36,6!& set ID8=!ID:~42,6!& set ID9=!ID:~48,6! (echo Версия: %%b %%c, %%d & echo.IID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!&echo.) >>"%~dp0IID.txt") else ( set ID1=!ID:~0,7!& set ID2=!ID:~7,7!& set ID3=!ID:~14,7!& set ID4=!ID:~21,7!& set ID5=!ID:~28,7!& set ID6=!ID:~35,7!& set ID7=!ID:~42,7!& set ID8=!ID:~49,7!& set ID9=!ID:~56,7! (echo Версия: %%b %%c, %%d & echo.IID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!&echo.) >>"%~dp0IID.txt") ) Exit /B Цитата:
Сработало только после Ваших поправок с кавычками Благодарю! Цитата:
Благодарю! |
Гена829999, кавычки — само собой. Но и:
Код:
setlocal enableextensions enabledelayedexpansion |
Цитата:
Было изначально в оригинале, но и с ним не работал в любой папке любого диска Работал только на рабочем столе Только после Ваших поправок заработало независимо от местоположения Видимо проблема в путях папок-в пробелах в пути к ним Пытался без %~dp0 как и в других батниках,но никак не получалось С %~dp0 впервые сталкиваюсь |
Цитата:
Код:
call /? |
Цитата:
Пример: ver | find /i "6.1" if %ERRORLEVEL%==0 call Windows7IID |
Можно.
Код:
@echo off |
Цитата:
|
Время: 12:48. |
Время: 12:48.
© OSzone.net 2001-