Mam plik wsadowy, który znajduje się w katalogu i musi być uruchamiany stamtąd, ponieważ aktualizuje pliki w tym katalogu.
Działa to doskonale, z wyjątkiem sytuacji, gdy użytkownik uruchamia plik wsadowy jako administrator (wymagany w systemie Vista). Następnie katalog początkowy to C: \ Windows \ System32.
Czy istnieje sposób, aby nadal wiedzieć, z którego katalogu został uruchomiony plik wsadowy?
Nie chcę, aby użytkownik ręcznie wchodził do katalogu.Katalog początkowy plików wsadowych systemu Windows po uruchomieniu "admin as
Odpowiedz
Spróbuj uzyskać dostęp do ścieżki pliki wsadowe takiego:
echo %~dp0
Aby uzyskać więcej informacji, zobacz następujący cytat z poleceniem for /?
który opisuje w jaki sposób powyższe polecenie działa:
You can now use the following optional syntax: %~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file %~$PATH:I - searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only %~dp$PATH:I - searches the directories listed in the PATH environment variable for %I and expands to the drive letter and path of the first one found. %~ftzaI - expands %I to a DIR like output line
używać:
cd% 0 ..
na początku Inning pliku wsadowego do zmiany katalogu do katalogu, w którym plik wsadowy został uruchomiony
-Mathew
To nie zmieni litery dysku. –
roztwór roboczy tutaj.
http://www.vistax64.com/vista-general/79849-run-administrator-changes-default-directory.html
FOR/F %% I w ("% 0") należy ustawiać BATDIR = %% ~ dpi
echo plik wsadowy znajduje się w katalogu% BATDIR%
Możesz bezpośrednio użyć '% ~ dp0'. Nie ma potrzeby przywoływania 'for' tutaj. – Joey
Lepsze niż cd
jest pushd
które
- zmiana litera dysku, jeśli począwszy od
D:\...
- przypisać literę dysku, czy na ścieżce sieciowej UNC
Więc pushd %~dp0
jest dobra.
Dobra praktyka to połączenie popd
po zakończeniu.
To powinno rozwiązać problem przez ustawienie katalogu roboczego dla pliku wsadowego z powrotem do bieżącego katalogu:
zawierać te dwie linie w górnej części skryptu bat:
@setlocal enableextensions
@cd /d "%~dp0"
Znalezione w : http://www.codeproject.com/Tips/119828/Running-a-bat-file-as-administrator-Correcting-cur
To jest idealne. Rozwiązałem mój problem "nie znaleziono pliku" podczas uruchamiania pliku bat jako administrator. – pandalion98
Możesz CD bezpośrednio z nazwy pliku, dodając rodzica (nie testowane w Windows 8.x, ale działało "na zawsze", o ile pamiętam).
CD %FILENAME%\..
i dysk CD zmieni także dyski, używając/D, pokazanego powyżej, ale nie wymienionego wyraźnie, co może zostać pominięte. CD/D% FILENAME% \ ..
(FOR /? IF /? SET /? CALL /? GOTO /? wszystkim zapewnić wysoce użyteczny odczyt jeśli używasz cmd.exe, ja ponownie przeczytać je raz na jakiś czas.)
- 1. Porównanie czasu plików wsadowych systemu Windows
- 2. Pobierz aktualny katalog plików wsadowych
- 3. Czy istnieje struktura testów jednostkowych dla plików wsadowych systemu Windows?
- 4. Ograniczenia rozmiaru pliku i długości linii plików wsadowych systemu Windows
- 5. Vim: Zmień katalog początkowy?
- 6. MyComputer jako katalog początkowy
- 7. Uwierzytelnianie plików wykonywalnych systemu Windows
- 8. Jak uruchomić zadanie po uruchomieniu usługi systemu Windows?
- 9. Problem z zaufanym certyfikatem po ponownym uruchomieniu systemu Windows
- 10. strzałek wyzwalać „pause” dwukrotnie w plikach wsadowych systemu Windows
- 11. Polecenie Synchronizacja systemu plików dla systemu Windows
- 12. Monitorowanie po uruchomieniu exe
- 13. Zaawansowane wyszukiwanie plików systemu Windows
- 14. wywoływanie plików wsadowych wewnątrz nant
- 15. Wyłączanie systemu Windows po symulacji
- 16. Zmień bieżący katalog vima po uruchomieniu z wiersza poleceń
- 17. Pobieranie atrybutów plików z systemu Windows cmd
- 18. Jak odłączyć nazwy plików systemu Windows w języku Java?
- 19. Czy istnieje limit rozmiaru plików wsadowych?
- 20. Jak skopiować katalog przy użyciu systemu plików doładowania?
- 21. Usługa systemu Windows nie uruchomi się automatycznie po ponownym uruchomieniu komputera
- 22. Usługa systemu Windows nie jest automatycznie uruchamiana po ponownym uruchomieniu komputera
- 23. Uwierzytelnianie systemu Windows nie działa po uruchomieniu projektu z programu Visual Studio
- 24. Python tracący argumenty po uruchomieniu z PATH na Windows
- 25. Ponowne podłączenie do zdalnego systemu Akka po ponownym uruchomieniu klienta
- 26. którego rdzeń jest inicjowany jako pierwszy po uruchomieniu systemu?
- 27. Jak automatycznie uruchomić Kafkę po uruchomieniu systemu w Ubuntu 14.04?
- 28. Usługa systemu Windows nie jest uruchamiana po uaktualnieniu systemu Windows 10
- 29. kontrola systemu plików chrome - przeładowanie po zmianie
- 30. Kopiowanie plików z systemu Windows do podsystemu Ubuntu
Fantastic , Nie znałem tego. Wielkie dzięki – Marc
Jak niezrozumiałe! Ale dokładnie to, czego potrzebowałem. Dzięki. – stucampbell
@stucampbell wypróbuj polecenie "dla /?" aby uzyskać szczegółowy opis tego działania (przewiń w dół do strony 4) – Martin