Я знаю, что %0
содержит полный путь пакетного сценария, напримерc:\path\to\my\file\abc.bat
Я бы path
равнялсяc:\path\to\my\file
Как я мог этого достичь?
Я знаю, что %0
содержит полный путь пакетного сценария, напримерc:\path\to\my\file\abc.bat
Я бы path
равнялсяc:\path\to\my\file
Как я мог этого достичь?
Ответы:
%~dp0
будет каталог. Вот некоторая документация по всем модификаторам пути . Прикольные вещи :-)
Чтобы удалить последний обратный слеш, вы можете использовать :n,m
синтаксис подстроки, например:
SET mypath=%~dp0
echo %mypath:~0,-1%
Я не верю, что есть способ объединить %0
синтаксис с :~n,m
синтаксисом, к сожалению.
%~0\..
- знал, что должен быть лучший способ! Кроме того, вы, вероятно, захотите заключить %~dp0
в двойные кавычки ( ""
), если в имени каталога есть пробелы и т. Д.
%~dp0
содержит `` в конце. У тебя есть идея как это убрать?
SET msg=hello world
работает отлично). Однако, когда вы используете% mypath% в другом месте, вы должны быть осторожны, чтобы использовать его в кавычках, хотя они не нужны cd
ни для того, ни для другого.
Вы можете использовать следующий скрипт, чтобы получить путь без "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
может быть относительный путь. Чтобы преобразовать его в полный путь, попробуйте что-то вроде этого:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
напрямую?
%~dp0
может быть относительным, который может или не может быть проблемой в зависимости от
%~dp0
не может содержать относительный путь, d
обозначает диск и p
путь, как диск может быть относительным?
%~dp0
это будет абсолютный путь, даже если скрипт был запущен как относительный путь. Благодаря комментарию Джеба этот ответ меня не обманул. Почему люди просто придумывают вещи и уходят и начинают распространять свое дикое воображение на других. У меня есть коллега, который делает это, но я обвинил его (молодой) возраст. Я бы хотел, чтобы мой отрицательный голос был засчитан.
Вы можете использовать %~dp0
, d означает только диск, p означает только путь, 0 - аргумент для полного имени файла командного файла.
Например, если путь к файлу был C: \ Users \ Oliver \ Desktop \ example.bat, тогда аргумент будет равен C: \ Users \ Oliver \ Desktop \, также вы можете использовать команду set cpath=%~dp0 && set cpath=%cpath:~0,-1%
и использовать %cpath%
переменную для удаления завершающего слеша.
%cd%
даст вам путь к каталогу, из которого выполняется скрипт.
Просто беги:
echo %cd%
%CD%
текущая рабочая папка, а не папка, в которой хранится командный файл. Они могут быть в одном месте, но часто это не так.
Это было бы %CD%
переменной.
@echo off
echo %CD%
%CD%
возвращает текущий каталог, в котором находится пакетный скрипт.
CD C:\Temp <CR> ECHO %CD%
( <CR>
это новая строка ...)
Я работаю на компьютере с Windows 7, и в итоге я использовал строки ниже, чтобы получить абсолютный путь к папке для моего bash-скрипта.
Я попал к этому решению после просмотра 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