![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Убрать/Заменить с батника %~dp0 |
|
|
CMD/BAT - [решено] Убрать/Заменить с батника %~dp0
|
![]() Пользователь Сообщения: 62 |
Здравствуйте!
Есть батник, который выдает в текстовом файле ид установки 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
|
Профиль | Отправить PM | Цитировать Цитата Гена829999:
Цитата Гена829999:
Скрытый текст
@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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А на рабочем столе создается и со всем содержимым |
|
Отправлено: 18:49, 25-09-2021 | #3 |
Ветеран Сообщения: 4635
|
Профиль | Отправить PM | Цитировать Гена829999, не пробовали в сценарии включать расширенную обработку команд?
|
Отправлено: 19:02, 25-09-2021 | #4 |
Ветеран Сообщения: 4635
|
Профиль | Отправить 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 |
![]() Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:34, 25-09-2021 | #6 |
Ветеран Сообщения: 4635
|
Профиль | Отправить PM | Цитировать Цитата Гена829999:
|
|
Отправлено: 19:43, 25-09-2021 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата NickM:
|
|
Отправлено: 20:16, 25-09-2021 | #8 |
![]() Пользователь Сообщения: 62
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:16, 25-09-2021 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|