wiem to %0 zawiera pełną ścieżkę skryptu wsadowego, npc:\path\to\my\file\abc.bat
Byłbym pathró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 pathrównyc:\path\to\my\file
Jak mogłem to osiągnąć?
Odpowiedzi:
%~dp0będzie katalog. Oto dokumentacja wszystkich modyfikatorów ścieżki . Zabawne rzeczy :-)
Aby usunąć końcowy ukośnik odwrotny, możesz użyć :n,mskładni podciągów:
SET mypath=%~dp0
echo %mypath:~0,-1%
Niestety nie wierzę, że istnieje sposób na połączenie %0składni ze :~n,mskładnią.
%~0\..- wiedziałem, że musi być lepszy sposób! Ponadto prawdopodobnie będziesz chciał zawrzeć %~dp0w cudzysłowie ( "") w przypadku spacji w nazwie katalogu itp.
%~dp0zawiera `` na końcu. Czy masz pomysł, jak go usunąć?
SET msg=hello worlddział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"
%~dp0moż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
%~dp0bezpośrednio?
%~dp0może być względne, co może, ale nie musi być problemem, w zależności od przypadku użycia
%~dp0nie może zawierać ścieżki względnej, doznacza 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