Natknąłem się na małą przeszkodę, próbując rekurencyjnie uzyskać tylko nazwy plików (bez rozszerzeń i ścieżek plików). To działało dla mnie w folderze głównym:
dir /b
Ale kiedy dodałem / s, aby skanować rekursywnie, otrzymałem również ścieżki do plików przed nazwami plików, których nie chcę. Czy istnieje sposób na uzyskanie nagich nazw plików ze wszystkich podfolderów w katalogu?
Im w systemie Windows 7 x64 Wolę używać zwykłego wiersza polecenia, a nie PS lub VBS
Spróbuj tego:
Więcej informacji o tym, jak działa i co robi, wpisz
for /?
źródło
>> filename.txt
lub
zakładając plik
noquotes.bat
w % PATH% z tą zawartościąwyjaśniono podejście dla / r
for /r
przechodzi rekursywnie do bieżącego katalogu (można określić katalogfor /r drive:\path\
, przyjmuje się katalog bieżący) i wykonuje polecenie określone przez do dla każdego pliku dopasowanego w zestawie(*)
. Zestaw(.)
pasowałby tylko do katalogów. @echo% ~ ni To polecenie działa tak, jak jest w wierszu polecenia. Podwój swoje cytaty, jeśli umieścisz je w pliku wsadowym. to znaczyfor /r %%i in (*) do @echo %%~ni
wyjaśniono podejście do plików
/s
wylicza bieżące i wszystkie podkatalogi/c
wykonują polecenie w cudzysłowie@isdir
i@fname
jest symbolem emitowanym do ciągu poleceńDodatkowy plik wsadowy
noquotes.bat
pomaga, usuwając podwójne cudzysłowy z% ~ 1 (parametr 1),forfiles
pozwala również określić ścieżkę, od której należy zacząćforfiles /P C:\Windows ...
źródło
Wyświetl wszystkie pliki, nagie, rekurencyjne, używając atrybutów (nie katalogu) (tylko pliki)
reż / B / S / A: -D
C: \ test \ cache> katalog / B / S / A: -D
C: \ test \ cache \ 7 \ 0f \ 7b50ed0522645513da90345120eaf0f7 C: \ test \ cache \ d \ 23 \ 814644aa6a8195c91e54d2f7bb64e23d
źródło
dir /b /s
] skanować rekurencyjnie, dostałem również ścieżki do plików przed nazwami plików, których nie chcę ”. Więc mówisz PO, aby wypróbował trywialną odmianę tego, co już wypróbował, a twoja odpowiedź pokazuje że daje taki sam wynik, jak podczas próby PO (tj. nie tego, czego chcą).