Magiczne zmienne %
n zawierają argumenty użyte do wywołania pliku: %0
jest ścieżką do samego pliku nietoperza, %1
jest pierwszym argumentem po, %2
jest drugim i tak dalej.
Ponieważ argumentami są często ścieżki plików, istnieje dodatkowa składnia w celu wyodrębnienia części ścieżki. ~d
to dysk, ~p
to ścieżka (bez dysku), ~n
to nazwa pliku. Można je łączyć, więc ~dp
jest to dysk + ścieżka.
%~dp0
jest więc bardzo przydatny w nietoperzu: jest to folder, w którym znajduje się plik wykonywalny nietoperza.
Możesz także uzyskać inne rodzaje meta informacji o pliku: ~t
jest znacznikiem czasu, ~z
jest rozmiarem.
Poszukaj tutaj odwołania do wszystkich poleceń wiersza poleceń. Kody tyldy magia są opisane poniżej na .
echo %~dp0
nie będzie działać w wierszu poleceń, tylko w pliku wsadowym. Hه!%~d0
i%~d0%
?echo %~pd0
daje to samo wyjście co echo%~dp0
(zamiast odwrotnego zgodnie z oczekiwaniami). Ponadto wartość%0
jest różna w zależności od tego, czy klikniesz dwukrotnie plik wsadowy, czy uruchomisz go z cmd.Są to ulepszone podstawienia zmiennych. Modyfikują zmienne% N używane w plikach wsadowych. Bardzo przydatne, jeśli lubisz programować wsadowo w systemie Windows.
Możesz znaleźć powyższe, uruchamiając
FOR /?
.źródło
Tak, istnieją inne skróty, których możesz użyć, które są podane poniżej. W twoim poleceniu ~ d0 oznaczałoby literę napędu 0. argumentu.
Ponieważ 0-tym argumentem jest ścieżka skryptu, otrzymuje ona literę dysku ścieżki. Możesz także użyć następujących skrótów.
Można to również znaleźć bezpośrednio w wierszu polecenia po uruchomieniu CALL /? albo za /?
źródło
Z analizy nazw plików w pliku wsadowym i innych idiomów - instrukcje Real'a :
Ścieżka (bez dysku), w której znajduje się skrypt: ~ p0
Dysk, na którym znajduje się skrypt: ~ d0
źródło
%~s0
pełną nazwę skryptu.Inną wskazówką, która bardzo by pomogła, jest to, że aby ustawić bieżący katalog na inny dysk , należy
%~d0
najpierw użyćcd %~dp0
. Spowoduje to zmianę katalogu na dysk pliku wsadowego, a następnie na jego folder.Dla #oneLinerLovers
cd /d %~dp0
zmieni zarówno dysk, jak i katalog :)Mam nadzieję, że to komuś pomoże.
źródło
pushd %~dp0
, że nie ma problemu ze zmianą bieżącego dysku i daje dodatkową korzyść z możliwościpopd
powrotu do oryginalnego dysku / ścieżki później.%~d0
daje literę dysku argumentu 0 (nazwa skryptu),%~p0
ścieżkę.źródło
Niektórzy muszą uważać na:
Po dwukrotnym kliknięciu plik wsadowy
%0
zostanie otoczony cudzysłowami. Na przykład, jeśli zapiszesz ten plik jakoc:\test.bat
:Dwukrotne kliknięcie spowoduje otwarcie nowego wiersza polecenia z danymi wyjściowymi:
Ale jeśli najpierw otworzysz wiersz polecenia i wywołasz go bezpośrednio z tego wiersza polecenia,
%0
odniesie się do dowolnego wpisanego tekstu . Jeśli wpiszesztest.bat
Enter, wynik nie%0
będzie zawierał cudzysłowów, ponieważ nie wpisałeś cudzysłowów:Jeśli wpiszesz
test
Enter, wyjście%0
również nie będzie miało rozszerzenia, ponieważ nie wpisałeś żadnego rozszerzenia:To samo dla
tEsT
Enter:Jeśli wpiszesz
"test"
Enter, wynik%0
będzie zawierał cudzysłowy (ponieważ je wpisałeś), ale bez rozszerzenia:Wreszcie, jeśli wpiszesz
"C:\test.bat"
, wynik będzie dokładnie tak, jakbyś go dwukrotnie kliknął:Pamiętaj, że nie są to wszystkie możliwe wartości,
%0
ponieważ możesz wywołać skrypt z innych folderów:Wpłynie to również na wszystkie powyższe przykłady
%~0
, ponieważ dane wyjściowe%~0
to po prostu dane wyjściowe%0
cudzysłowów (jeśli występują).źródło
Ten kod wyjaśnia użycie znaku ~ tilda, co było dla mnie najbardziej mylące. Kiedy to zrozumiem, znacznie łatwiej zrozumieć:
źródło
Wyświetla bieżącą lokalizację pliku lub katalogu, w którym aktualnie się znajdujesz. Na przykład; jeśli plik wsadowy znajduje się w katalogu pulpitu, wówczas „% ~ dp0” wyświetli katalog pulpitu. jeśli chcesz, aby wyświetlał bieżący katalog z bieżącą nazwą pliku, możesz wpisać „% ~ dp0% ~ n0% ~ x0”.
źródło