Я знаю, что %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