Pobierz bieżący katalog plików batchfile

Po pierwsze, widziałem ten temat ale nie mogłem tego zrozumieć.

Pytanie:

W D:\path\to\file.bat znajduje się plik wsadowy o następującej treści:

echo %cd%
pause

Wyjście to:

C:\

To musi być D:\path\to

Co robię źle?
Author: Community, 2013-06-12

3 answers

Systemowa zmienna tylko do odczytu %CD% zachowuje ścieżkę wywołującego wsad, a nie lokalizację pliku wsadowego.

Możesz uzyskać nazwę samego skryptu wsadowego wpisaną przez Użytkownika za pomocą %0 (np. scripts\mybatch.bat). rozszerzenia parametrów mogą być zastosowane do tego celu, więc %~dp0 zwróci Napęd i ścieżkę do skryptu wsadowego (np. W:\scripts\), a %~f0 zwróci pełną ścieżkę (np. W:\scripts\mybatch.cmd).

Możesz odwołać się do innych plików w tym samym folderze co skrypt wsadowy, używając tego składnia:

CALL %0\..\SecondBatch.cmd

To może być nawet użyte w podprogramie, Echo %0 poda Etykietę wywołania, ale echo "%~nx0" poda nazwę pliku skryptu wsadowego.

Gdy zmienna %0 jest rozwijana, wynik jest zamknięty w cudzysłowie.

Więcej o parametrach partii .

 402
Author: Stoleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-16 18:18:49

Bardzo proste:

setlocal
cd /d %~dp0
File.exe
 92
Author: shay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-05 23:44:27

W Twoim .plik bat:

set mypath=%cd%

Możesz teraz użyć zmiennej %mypath%, aby odwołać się do ścieżki do pliku .bat. Aby sprawdzić poprawność ścieżki:

@echo %mypath%

Na przykład plik o nazwie DIR.bat o następującej treści

set mypath=%cd%
@echo %mypath%
Pause

Uruchom z katalogu g:\test\bat wyświetli Echo tej ścieżki w oknie poleceń DOS.

 16
Author: rockerron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 08:01:04