wiem to %0
zawiera pełną ścieżkę skryptu wsadowego, npc:\path\to\my\file\abc.bat
Byłbym path
równyc:\path\to\my\file
Jak mogłem to osiągnąć?
wiem to %0
zawiera pełną ścieżkę skryptu wsadowego, npc:\path\to\my\file\abc.bat
Byłbym path
równyc:\path\to\my\file
Jak mogłem to osiągnąć?
Odpowiedzi:
%~dp0
będzie katalog. Oto dokumentacja wszystkich modyfikatorów ścieżki . Zabawne rzeczy :-)
Aby usunąć końcowy ukośnik odwrotny, możesz użyć :n,m
składni podciągów:
SET mypath=%~dp0
echo %mypath:~0,-1%
Niestety nie wierzę, że istnieje sposób na połączenie %0
składni ze :~n,m
składnią.
%~0\..
- wiedziałem, że musi być lepszy sposób! Ponadto prawdopodobnie będziesz chciał zawrzeć %~dp0
w cudzysłowie ( ""
) w przypadku spacji w nazwie katalogu itp.
%~dp0
zawiera `` na końcu. Czy masz pomysł, jak go usunąć?
SET msg=hello world
działa dobrze). Jednak używając% mypath% w innym miejscu, należy zachować ostrożność, używając go w cudzysłowach, chociaż nie są one potrzebne do cd
żadnego z nich.
Możesz użyć następującego skryptu, aby uzyskać ścieżkę bez ciągnięcia „\”
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
może być ścieżką względną. Aby przekonwertować go na pełną ścieżkę, spróbuj czegoś takiego:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
bezpośrednio?
%~dp0
może być względne, co może, ale nie musi być problemem, w zależności od przypadku użycia
%~dp0
nie może zawierać ścieżki względnej, d
oznacza dysk i p
ścieżkę, w jaki sposób dysk może być względny?
%~dp0
że będzie to ścieżka bezwzględna, nawet jeśli skrypt został uruchomiony jako ścieżka względna. Dzięki komentarzowi jeba ta odpowiedź mnie nie zmyliła. Dlaczego ludzie po prostu coś wymyślają i zaczynają szerzyć swoją dziką wyobraźnię na innych. Mam tego kolegę, który to robi, ale winiłem jego (młody) wiek. Chciałbym, żeby moje głosowanie w głosowaniu się liczyło.
Możesz użyć %~dp0
, d oznacza tylko dysk, p oznacza tylko ścieżkę, 0 to argument pełnej nazwy pliku wsadowego.
Na przykład, jeśli ścieżka do pliku to C: \ Users \ Oliver \ Desktop \ example.bat, wówczas argument byłby równy C: \ Users \ Oliver \ Desktop \, również możesz użyć polecenia set cpath=%~dp0 && set cpath=%cpath:~0,-1%
i użyć %cpath%
zmiennej, aby usunąć końcowy ukośnik.
%cd%
poda ścieżkę do katalogu, z którego skrypt jest uruchomiony.
Po prostu biegnij:
echo %cd%
%CD%
to bieżący folder roboczy, a nie folder, w którym przechowywany jest plik wsadowy. Mogą być w tej samej lokalizacji, ale często nie są.
To byłaby %CD%
zmienna.
@echo off
echo %CD%
%CD%
zwraca bieżący katalog, w którym znajduje się skrypt wsadowy.
CD C:\Temp <CR> ECHO %CD%
( <CR>
nowa linia ...)
Pracuję na komputerze z systemem Windows 7 i wykorzystałem poniższe linie, aby uzyskać bezwzględną ścieżkę folderu dla mojego skryptu bash.
Dotarłem do tego rozwiązania po przejrzeniu 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