Как записать путь в реестр
Цитата: Имир от 16.05.2026, 17:17Добрый вечер! Хочу с помощью батника записать в реестр путь к папке батника.
Данный скрипт у меня не работает.
"%~dp0\"такая комбинация символов оставляет лишний слэш.
Пробовал заменить"%~dp0"на"%cd%", но в редких случаях скрипт может работать некорректно.
Буду признателен за помощь!
reg add "HKCU\Software\MyFolder" /v MyPath /t REG_SZ /d "%~dp0" /f
Добрый вечер! Хочу с помощью батника записать в реестр путь к папке батника.
Данный скрипт у меня не работает.
Скопировано"%~dp0\" такая комбинация символов оставляет лишний слэш.
Пробовал заменить Скопировано"%~dp0" на Скопировано"%cd%", но в редких случаях скрипт может работать некорректно.
Буду признателен за помощь!
reg add "HKCU\Software\MyFolder" /v MyPath /t REG_SZ /d "%~dp0" /f
Цитата: Mikhail от 16.05.2026, 17:31Имир, Привет.
Так слеш на конце, это норм для cmd, он же путь к папке берет и в конце всегда "\", это не лишний символ)
Имир, Привет.
Так слеш на конце, это норм для cmd, он же путь к папке берет и в конце всегда "\", это не лишний символ)
Цитата: Mikhail от 16.05.2026, 17:38Так, сообщение написал, а забыл вставить код,
for %%a in ("%~dp0.") do reg add "HKCU\Software\MyFolder" /f /v MyPath /t REG_SZ /d "%%~fa"долже без всего лишнего записать.
Так, сообщение написал, а забыл вставить код, Скопированоfor %%a in ("%~dp0.") do reg add "HKCU\Software\MyFolder" /f /v MyPath /t REG_SZ /d "%%~fa" долже без всего лишнего записать.
Цитата: Имир от 16.05.2026, 17:53Mikhail, спасибо огромное! Как всегда, коротко и понятно)
А можно ещё спросить, как подобное сделать в гибридном скрипте?
Например, у меня есть батник с powershell-командами.
Нужно в переменную$pathToAddвставить путь к папке батника.@echo off powershell -NoProfile -ExecutionPolicy Bypass -Command "Invoke-Expression (Get-Content '%~f0' | Select-Object -Skip 3 | Out-String)" goto :eof $pathToAdd = "" $currentPath = [Environment]::GetEnvironmentVariable("Path", "User") if ($currentPath -split ';' -notcontains $pathToAdd) { $newPath = ($currentPath, $pathToAdd -split ';' | Where-Object { $_ }) -join ';' [Environment]::SetEnvironmentVariable("Path", $newPath, "User") }
Mikhail, спасибо огромное! Как всегда, коротко и понятно)
А можно ещё спросить, как подобное сделать в гибридном скрипте?
Например, у меня есть батник с powershell-командами.
Нужно в переменную Скопировано$pathToAdd вставить путь к папке батника.
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "Invoke-Expression (Get-Content '%~f0' | Select-Object -Skip 3 | Out-String)"
goto :eof
$pathToAdd = ""
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($currentPath -split ';' -notcontains $pathToAdd) {
$newPath = ($currentPath, $pathToAdd -split ';' | Where-Object { $_ }) -join ';'
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")
}
Цитата: Mikhail от 17.05.2026, 03:28Имир, до powershell пишешь bat скрипт,
for %%a in ("%~dp0.") do set "pathToAdd=%%~fa", а после в переменную пишешь$pathToAdd = $pathToAdd, а и еще надо поправить powershell, на такойpowershell -NoProfile -ExecutionPolicy Bypass -Command "$pathToAdd = '%pathToAdd%'; Invoke-Expression (Get-Content '%~f0' | Select-Object -Skip 3 | Out-String)", как то так)
Имир, до powershell пишешь bat скрипт, Скопированоfor %%a in ("%~dp0.") do set "pathToAdd=%%~fa", а после в переменную пишешь Скопировано$pathToAdd = $pathToAdd, а и еще надо поправить powershell, на такой Скопированоpowershell -NoProfile -ExecutionPolicy Bypass -Command "$pathToAdd = '%pathToAdd%'; Invoke-Expression (Get-Content '%~f0' | Select-Object -Skip 3 | Out-String)", как то так)
Цитата: Имир от 17.05.2026, 08:10Михаил, спасибо! Отлично работает!
И всё-таки интересно, почему"%~dp0"не работает... Скрипт как будто не понимает, где заканчивается запись пути и пишет в реестр вот это:C:\Users\Admin\Desktop" /f
Михаил, спасибо! Отлично работает!
И всё-таки интересно, почему Скопировано"%~dp0" не работает... Скрипт как будто не понимает, где заканчивается запись пути и пишет в реестр вот это: СкопированоC:\Users\Admin\Desktop" /f
Цитата: Имир от 17.05.2026, 08:44Mikhail, разобрался с эти) Комбинация
\"на конце воспринимается как экранированная кавычка. Буду знать.
Спасибо большое за помощь!
Вопрос можно считать решённым
Mikhail, разобрался с эти) Комбинация Скопировано\" на конце воспринимается как экранированная кавычка. Буду знать.
Спасибо большое за помощь!
Вопрос можно считать решённым