CMD/BAT - [решено] Последний символ при раскрытии %~dp0

Ответить
Аватара пользователя
Emulty

CMD/BAT - [решено] Последний символ при раскрытии %~dp0

Сообщение Emulty »

Здравствуйте товарищи!



Подскажите каким способом проще всего отрезать последний символ при раскрытии %~dp0



Например есть батник, где есть необходимость определить переменную каталога из которого запускаем скрипт

==

%~dp0=RunPath

%RunPath%\Program1\program.exe

==

В итоге строка раскрывается в :

X:\Folder\\Program1\program.exe



В некоторых случаях двойной слеш \\ ничего не играет, в некоторых путь становиться не действительным. Я понимаю, что можно написать так:

%RunPath%Program1\program.exe

и на выхлопе будет уже все по человечески:

X:\Folder\\Program1\program.exe



Но вид:

%RunPath%Program1\program.exe

не сильно читаем, особенно, когда скрипт длинный и таких строк имеет много.



Поделитесь опытом и мыслями, пожалуйста.
Аватара пользователя
gora

Re: CMD/BAT - [решено] Последний символ при раскрытии %~dp0

Сообщение gora »

Код:

Код: Выделить всё

@Echo Off
Set RunPath=%~dp0
Set RunPath=%RunPath:~0,-1%
Echo %RunPath%\Program1\program.exe
Pause
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Последний символ при раскрытии %~dp0

Сообщение Foreigner »

Emulty

В каком случае неработоспособен X:\Folder\\Program1\program.exe ?

Попробуйте %RunPath%.\Program1\program.exe
Аватара пользователя
kiripanda

Re: CMD/BAT - [решено] Последний символ при раскрытии %~dp0

Сообщение kiripanda »

Спасибо всем за подсказки и отдельное gora!

* Сам периодически пишу относительно простые скрипты, многих нюансов еще не знаю, поэтому обратился за помощью.



==

kiripanda написал:

В каком случае неработоспособен X:\Folder\\Program1\program.exe ?

Попробуйте %RunPath%.\Program1\program.exe

==

Точно не помню, но был случай, когда один рабочий скрипт перенес с Win2003 на Win2008R2 и он перестал работать. Там вроде бы путь к исполняемому файлу перестал работать, то ли в параметрах у исполняемого файла был раскрывающийся путь к файлу из такой переменной. Когда убрал лишний слеш, все пошло.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»