Zmienna tylko do odczytu systemowego %CD%
przechowuje ścieżkę osoby wywołującej wsad, a nie lokalizację pliku wsadowego.
Można uzyskać nazwę samego skryptu wsadowego, wpisaną przez użytkownika pod numerem %0
(np. scripts\mybatch.bat
). Parameter extensions można zastosować do tego, aby %~dp0
zwrócił Dysk i ścieżkę do skryptu wsadowego (np. W:\scripts\
), a %~f0
zwróci pełną nazwę ścieżki (na przykład W:\scripts\mybatch.cmd
).
Można odwołać się do innych plików w tym samym folderze co skrypcie za pomocą tej składni:
CALL %0\..\SecondBatch.cmd
To mogą być używane nawet w podprogramie, Echo %0
da etykietę rozmowę, ale echo "%~nx0"
da nazwę pliku skryptu wsadowego.
Po rozwinięciu zmiennej %0
wynik jest ujęty w cudzysłowy.
More on batch parameters.
Powinieneś przeczytać wszystkie odpowiedzi na pytania, szczególnie te, które mają wyższy głos, a nie tylko akceptowane. Odpowiedź z najwyższym wynikiem w opublikowanym linku już odpowiada na twoje pytanie. – dbenham
Jeśli jesteś w c: \ podczas wpisywania nazwy pliku wsadowego, to c: \ jest tym, co zostanie wydrukowane% cd%. – foxidrive