Как получить путь к пакету script в Windows?

Я знаю, что %0 содержит полный путь к пакету script, например. c:\path\to\my\file\abc.bat

Я бы path был равен c:\path\to\my\file

Как я мог достичь этого?

Ответ 1

%~dp0 будет каталогом. Вот некоторая документация по всем модификаторам пути. Веселый материал :-)

Чтобы удалить окончательную обратную косую черту, вы можете использовать синтаксис подстроки :n,m, например:

SET mypath=%~dp0
echo %mypath:~0,-1%

Я не думаю, что есть способ комбинировать синтаксис %0 синтаксисом :~n,m, к сожалению.

Ответ 2

%~dp0 может быть относительным путем. Чтобы преобразовать его в полный путь, попробуйте что-то вроде этого:

pushd %~dp0
set script_dir=%CD%
popd

Ответ 3

Вы можете использовать следующий script, чтобы получить путь без завершающего "\"

for %%i in ("%~dp0.") do SET "mypath=%%~fi"

Ответ 4

Это будет переменная %CD%.

@echo off
echo %CD%

%CD% возвращает текущий каталог, в котором находится пакет script.

Ответ 5

Я работаю над машиной Windows 7, и я закончил использовать строки ниже, чтобы получить абсолютный путь к папке для моего bash script.

Я получил это решение, посмотрев http://www.linuxjournal.com/content/bash-parameter-expansion.

#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder