Zmień bieżący katalog na katalog plików wsadowych

18

Mam batplik w systemie Windows, który wykonuje operację procdump . Problem z plikiem wsadowym polega na tym, że muszę wykonać cd do katalogu plików wsadowych przed wykonaniem zadania, w przeciwnym razie skrypt nie będzie działał.

Jak przejść do bieżącego katalogu plików wsadowych?

Wypróbowałem następujący kod w moim procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

Ale się nie udało, komunikat o błędzie to:

Następujące użycie operatora ścieżki w podstawianiu parametrów wsadowych jest nieprawidłowe:% ~ dp "

W przypadku prawidłowych formatów wpisz CALL /? albo za /?

Edycja: Podana odpowiedź działa, ale istnieje tylko jeden haczyk: jeśli mój bieżący katalog jest inny niż katalog pliku wsadowego, otrzymam komunikat „System nie może znaleźć określonej ścieżki”. Czy ktoś ma jakieś pomysły?

Grawiton
źródło
Skąd bierzesz ten „% ~ dp”?
fretje

Odpowiedzi:

24

Ok, myślę, że znalazłem tutaj, co masz na myśli %~dp.

Myślę, że tak naprawdę chcesz to zrobić:

cd /D "%~dp0"

(!) Należy jednak pamiętać, że nadal nie zapewni to właściwego zachowania podczas próby wykonania wsadowej, gdy bieżący katalog znajduje się na innym dysku, ponieważ cdnie zmienia aktywnego dysku.

Edycja : Najwyraźniej (dzięki @Yoopergeek ) możesz dodać /Dparametr do cdpolecenia, aby mógł on również zmienić aktywny dysk.

fretje
źródło
Aby uzyskać więcej informacji na temat tych parametrów wsadowych, zobacz help callna cmdszybka.
Wstrzymano do odwołania.
Nawiasem mówiąc, możesz połączyć te parametry w ten sposób:%~dp0
Wstrzymano do odwołania.
Twoja odpowiedź jest pomocna; ale jeśli mój bieżący katalog znajduje się w innym katalogu niż plik wsadowy, to powyższe polecenie zakończy się niepowodzeniem; nawet cd /Dlub cd "%~dp0" /Dnie może pomóc.
Graviton,
@Ngu Soon Hui: To, że twój aktualny katalog ma inny katalog niż plik wsadowy, było oczywiste. Ale dlaczego to polecenie zawiedzie? Testowałem to tutaj i działa.
fretje
1
Znalazłem rozwiązanie za pomocą cd /D "%~dp0". Dzięki.
Graviton
4

Zostawiłbym komentarz do odpowiedzi Fretje, ale najwyraźniej nie mogę ???


W każdym razie, jeśli chodzi o notatkę: Zauważ
jednak, że nadal nie zapewni to właściwego zachowania, gdy próbujesz wykonać wsad, gdy bieżący katalog znajduje się na innym dysku, ponieważ cd nie zmienia dysku aktywnego.


Użyj /Dprzełącznika w poleceniu CD, a CD zmieni aktywny napęd.

Yoopergeek
źródło
... ale mogę skomentować własną odpowiedź. Człowieku, do bani, że nie mam repozytorium na ServerFault ... życzę, żeby jakiś SO-przedstawiciel „krwawił” tutaj.
Yoopergeek,
1
@Yoopergeek: możesz powiązać swoje konta. To da ci 100 powtórzeń tutaj, jeśli twoje powtórzenie na SO jest wyższe niż 200.
fretje