Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Убрать/Заменить с батника %~dp0

Ответить
Настройки темы
CMD/BAT - [решено] Убрать/Заменить с батника %~dp0

Аватара для Гена829999

Пользователь


Сообщения: 62
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте!
Есть батник, который выдает в текстовом файле ид установки 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

Отправлено: 17:20, 25-09-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Гена829999:
В другой любой папке он не работает »
Что именно означает «не работает»?

Цитата Гена829999:
Подозреваю строку %~dp0 в начале выводимого/создаваемого txt файла %~dp0IID.txt »
Обрамите для начала кавычками все пути. Наподобие:
Скрытый текст
Код: Выделить весь код
@echo off
for /d %%a in (4, 5, 6) do call :path "%%a"
start "" "%~dp0IID.txt"
>nul timeout 2
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.exe /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!
			
			>>"%~dp0IID.txt" (
				echo %%b %%c, %%d
				echo.Installation ID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!
				echo.
			)
		) 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!

			>>"%~dp0IID.txt" (
				echo %%b %%c, %%d
				echo.Installation ID: !ID1!-!ID2!-!ID3!-!ID4!-!ID5!-!ID6!-!ID7!-!ID8!-!ID9!
				echo.
			)
		)
	)
	exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:39, 25-09-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Гена829999

Пользователь


Сообщения: 62
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Что именно означает «не работает»? »
Ни создается файл IID.txt
А на рабочем столе создается и со всем содержимым

Отправлено: 18:49, 25-09-2021 | #3


Аватара для NickM

Ветеран


Contributor


Сообщения: 4635
Благодарности: 1115

Профиль | Отправить PM | Цитировать


Гена829999, не пробовали в сценарии включать расширенную обработку команд?

Отправлено: 19:02, 25-09-2021 | #4


Аватара для NickM

Ветеран


Contributor


Сообщения: 4635
Благодарности: 1115

Профиль | Отправить PM | Цитировать


Гена829999, попробуйте так, ниже Ваш код чуть подправленный, при это уверен, что специалисты предложат оптимальный:

Скрытый текст
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
set spath=%~dp0
for /d %%a in (4,5,6) do call :path %%a
start notepad "%spath%IID.txt"
timeout 2 >nul
del /f "%spath%IID.txt"
exit

:path
if exist "C:\Program Files\Microsoft Office\Office1%~1\ospp.vbs" (
cd /d "C:\Program Files\Microsoft Office\Office1%~1" & set prmt=%~1 & call :getIID %prmt%)
if exist "C:\Program Files (x86)\Microsoft Office\Office1%~1\ospp.vbs" (
cd /d "C:\Program Files (x86)\Microsoft Office\Office1%~1" & set prmt=%~1 & call :getIID %prmt%)
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 !prmt! 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.) >>"%spath%IID.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.) >>"%spath%IID.txt")
)
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:33, 25-09-2021 | #5


Аватара для Гена829999

Пользователь


Сообщения: 62
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Обрамите для начала кавычками все пути »
Благодарю Вас!
Работает как часы!

Цитата NickM:
не пробовали в сценарии »
Спасибо, но это не помогало!

Отправлено: 19:34, 25-09-2021 | #6


Аватара для NickM

Ветеран


Contributor


Сообщения: 4635
Благодарности: 1115

Профиль | Отправить PM | Цитировать


Цитата Гена829999:
Благодарю Вас!
Работает как часы! »
Покажите пжлст. полученный код сценария.

Отправлено: 19:43, 25-09-2021 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата NickM:
в сценарии включать расширенную обработку команд? »
А, кстати — да!

Отправлено: 20:16, 25-09-2021 | #8


Аватара для Гена829999

Пользователь


Сообщения: 62
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата NickM:
Покажите пжлст. полученный код сценария. »
Полученный Код Сценария
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


Цитата Iska:
А, кстати — да! »
Включал, а все ровно не работало
Сработало только после Ваших поправок с кавычками
Благодарю!

Цитата NickM:
попробуйте так »
Ваш код тоже работает!
Благодарю!

Отправлено: 20:23, 25-09-2021 | #9


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Гена829999, кавычки — само собой. Но и:
Код: Выделить весь код
setlocal enableextensions enabledelayedexpansion
нужен.

Отправлено: 21:16, 25-09-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Убрать/Заменить с батника %~dp0

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] аналог %~dp0 из bat для vbs NLOLegion Скриптовые языки администрирования Windows 13 05-01-2020 07:56
CMD/BAT - [решено] %~dp0 без слэша Peutrov Скриптовые языки администрирования Windows 4 25-10-2019 16:57
CMD/BAT - [решено] Последний символ при раскрытии %~dp0 Emulty Скриптовые языки администрирования Windows 4 24-07-2011 14:35
CMD/BAT - [решено] Убрать строчки с pause из батника game_Racer Скриптовые языки администрирования Windows 3 18-06-2011 16:27
[решено] Проблема с %~dp0 Stalingrad Автоматическая установка приложений 2 30-10-2007 12:02




 
Переход