Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] %~dp0 без слэша (http://forum.oszone.net/showthread.php?t=342666)

Peutrov 24-10-2019 22:08 2893455

%~dp0 без слэша
 
Код:

Reg Add "HKEY_CURRENT_USER\software\Tailored Noise\Sausage Fattener" /v "InstallLocation" /d "%~dp0" /F >Nul
видимо такой вид записи - неправильный. В реестре получается так:

параметр /F необходим. Команда не должна обращать внимание на имеющиеся записи.
А если повторно запустить батник - консоль вообще подвисает.
А если добавить хотя бы пробел
Код:

reg add ...... /d "%~dp0 "
- всё работает и консоль не подвисает при попытке перезаписать данные.
Оригинальный установщик программы в конец строки не добавляет символ слеш. Возможно не критично и программа будет работать даже если в строке реестра путь к папке содержит этот символ в конце. Но всё-таки можно ли сделать без него (и без проблема)? Спасибо.

megaloman 24-10-2019 22:17 2893459

Код:

@Echo Off
cls
        Set "dp0=%~dp0"
        Echo "%dp0:~0,-1%"
pause
Exit /B 0


Iska 24-10-2019 23:21 2893472

Код:

@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 2893539

Код:

@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 2893579

zbeypepels,
я бы c %cd% не связывался, злую шутку может сыграть, например:
Содержимое C:\ для примера

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

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

name.bat

Код:

@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-й строке вывода маленький уже есть, а еще бывает и похлеще, когда путь вообще не совпадает (лень искать такой пример, но это есть).


Время: 23:26.

Время: 23:26.
© OSzone.net 2001-