2013-04-08 33 views
7

Załóżmy, że używam pliku wsadowego i chcę, aby był on skierowany do folderu znajdującego się w tym samym katalogu partii. Jeśli się nie mylę, napiszesz "% ~ dp0 \ whateverfoldername". Ale czy nie można zrobić tego samego, pisząc ". \ Whateverfoldername"? Jeśli tak, jaka jest różnica i/lub przewaga odpowiedniego polecenia?Różnica między "% ~ dp0" i ". "?

+1

Może możesz. Ale to się nie uda, jeśli obecny katalog nie jest tam, gdzie masz taką nadzieję. –

+0

Co wynikałoby z działania jako administrator ... w ten sposób robisz to, o czym mówi RGuggisberg poniżej ... otrzymuję teraz lol – user2259606

Odpowiedz

17
pushd %~dp0 

jest często używany do zmiany katalogu pierwotnego, z którego partia została uruchomiona. Jest to bardzo przydatne w nowszych systemach operacyjnych, gdy użytkownik może "Uruchom jako administrator", który zmienia aktualny katalog dla ciebie! Spróbuj tego kiedyś. Wystarczy zrobić prosty bat

@echo off 
echo.CD=%CD% 
pushd %~dp0 
echo.CD=%CD% 
pause 

Teraz uruchom go. Teraz uruchom go ponownie jako Administrator na Vista, Win 7, Win 8, 2008 Server lub 2012 Server. Zobacz, co się dzieje?

+0

Ok to bardzo pomaga, widzę, dlaczego potrzebne jest dp0. Ale jaka jest różnica między pushd i cd? – user2259606

+0

Odpowiadając na siebie: Różnica między urządzeniami pushd i cd polega na tym, że pushd przechowuje poprzedni folder/ścieżkę do użycia przez polecenie POPD. POPD Zmienia katalog z powrotem na ścieżkę/folder ostatnio zapisany za pomocą polecenia PUSHD. Bum. Kocham was, dzięki! – user2259606

+1

Jeśli chcesz przejść z katalogu głównego na inny dysk, PUSHD działa bezproblemowo, podczas gdy z CD musisz użyć CD z parametrem/d lub CD z połączeniem, a następnie wpisać nazwę napędu. –

3

".\ zlokalizuje względem katalogu CURRENT, stąd jeśli zostały zmienione katalogi z poleceniem CD wtedy będzie patrząc na THAT katalogu, a nie w katalogu, w którym znajduje się partia.

W rzeczywistości normalne jest utworzenie osobnego katalogu, często nazywanego \batch lub może \belfry, aby zachować pliki wsadowe. Pod warunkiem, że dany ,bat jest zlokalizowany na path, zostanie zlokalizowany. %dp0 spowoduje wyświetlenie lokalizacji .bat.

+0

Również katalog roboczy może różnić się od katalogu nadrzędnego skryptu w zależności od tego, jak skrypt został uruchomiony. –