Войти

Показать полную графическую версию : [решено] %~dp0 без слэша


Peutrov
24-10-2019, 22:08
Reg Add "HKEY_CURRENT_USER\software\Tailored Noise\Sausage Fattener" /v "InstallLocation" /d "%~dp0" /F >Nul
видимо такой вид записи - неправильный. В реестре получается так:
https://i.paste.pics/2adeb3a41c666ab10784968e853b227a.png
параметр /F необходим. Команда не должна обращать внимание на имеющиеся записи.
А если повторно запустить батник - консоль вообще подвисает.
А если добавить хотя бы пробел
reg add ...... /d "%~dp0 "
- всё работает и консоль не подвисает при попытке перезаписать данные.
Оригинальный установщик программы в конец строки не добавляет символ слеш. Возможно не критично и программа будет работать даже если в строке реестра путь к папке содержит этот символ в конце. Но всё-таки можно ли сделать без него (и без проблема)? Спасибо.

megaloman
24-10-2019, 22:17
@Echo Off
cls
Set "dp0=%~dp0"
Echo "%dp0:~0,-1%"
pause
Exit /B 0

Iska
24-10-2019, 23:21
@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=%~dp0
>nul reg.exe add "HKEY_CURRENT_USER\software\Tailored Noise\Sausage Fattener" /v "InstallLocation" /d "\"%sPath:~,-1%\"" /f

endlocal
exit /b 0

zbeypepels
25-10-2019, 13:03
@echo off
cd /d "%~dp0"
Reg Add "HKEY_CURRENT_USER\software\Tailored Noise\Sausage Fattener" /v "InstallLocation" /d "%CD%" /F >Nul

alpap
25-10-2019, 16:57
zbeypepels,
я бы c %cd% не связывался, злую шутку может сыграть, например:

Структура папок
C:\
│ name.bat
│ f.txt

├───Papka
│ └───Papka_1
...



@echo off
echo ---------------------
echo %~dp0
echo %~dp0Papka
echo %cd%
echo %cd%\Papka
echo ---------------------
echo:
cd /d "Papka"
echo ---------------------
echo %~dp0
echo %~dp0Papka_1
echo %cd%
echo %cd%\Papka_1
echo ---------------------
echo:
pause



в 4-й строке вывода маленький уже есть, а еще бывает и похлеще, когда путь вообще не совпадает (лень искать такой пример, но это есть).




© OSzone.net 2001-2012