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?


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.


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.


... 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.