Potrzebuję ścieżki do folderu zawierającego plik cmd. Za pomocą% 0 mogę uzyskać nazwę pliku. Ale jak uzyskać nazwę folderu?
c: \ temp \ test.cmd >> test.cmd
PS Mój aktualny katalog! = Folder skryptu.
Jako nazwę folderu i dysk możesz użyć:
echo %~dp0
Możesz uzyskać znacznie więcej informacji za pomocą różnych modyfikatorów:
%~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
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
To jest kopia wklejana z „for /?” polecenie w monicie. Mam nadzieję, że to pomoże.
10 najlepszych wskazówek dotyczących partii DOS (Tak, partia DOS ...) pokazuje batchparams.bat (link do źródła jako sedno):
C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1 = c:\windows\notepad.exe
%~f1 = c:\WINDOWS\NOTEPAD.EXE
%~d1 = c:
%~p1 = \WINDOWS\
%~n1 = NOTEPAD
%~x1 = .EXE
%~s1 = c:\WINDOWS\NOTEPAD.EXE
%~a1 = --a------
%~t1 = 08/25/2005 01:50 AM
%~z1 = 17920
%~$PATHATH:1 =
%~dp1 = c:\WINDOWS\
%~nx1 = NOTEPAD.EXE
%~dp$PATH:1 = c:\WINDOWS\
%~ftza1 = --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE
cd /d "%~dp0"
(ze stackoverflow.com/questions/4451668 )Zaakceptowana odpowiedź jest pomocna, ale nie jest od razu oczywiste, jak pobrać nazwę pliku ze ścieżki, jeśli NIE używasz przekazanych wartości. Udało mi się to rozwiązać z tego wątku, ale na wypadek, gdyby inni nie mieli tyle szczęścia, oto jak to się robi:
Teraz
:file_name_from_path
funkcja może być używana w dowolnym miejscu do pobrania wartości, a nie tylko do przekazanych argumentów. Może to być niezwykle pomocne, jeśli argumenty mogą być przekazywane do pliku w nieokreślonej kolejności lub ścieżka nie jest w ogóle przekazywana do pliku.źródło
%~dp1
dla dysku i ścieżki."
s wokół,!myPath!
jeśli twoja ścieżka zawiera spacje (lub aby cytaty były częścią myPath)Aby przypisać je do zmiennych, pamiętaj, aby nie dodawać spacji przed lub po znaku równości:
Wtedy nie powinieneś mieć żadnych problemów.
źródło
Gdyby ktoś chciał alternatywnej metody ...
Jeśli jest to ostatni podkatalog w ścieżce, możesz użyć tego jednowierszowego:
Zwróciłoby to:
.... wraca do poprzedniego katalogu. / ad pokazuje tylko katalogi / b jest listą w nagim formacie / s zawiera wszystkie podkatalogi. Służy do uzyskania pełnej ścieżki katalogu do wydrukowania.
źródło
Miałem ten sam problem w mojej pętli, w której chciałem wyodrębnić pliki zip w tym samym katalogu, a następnie usunąć plik zip. Problem polegał na tym, że 7z wymaga folderu wyjściowego, więc musiałem uzyskać ścieżkę folderu każdego pliku. Oto moje rozwiązanie:
%% i to pełna ścieżka do pliku, a% ii \ .. po prostu zwraca folder nadrzędny.
mam nadzieję, że to pomoże.
źródło
Jeśli zaakceptowana odpowiedź Wadiha nie działa dla Ciebie, spróbuj
echo %CD%
źródło
Zostało to połączone z edytowanym przykładem cmd
źródło