Saya memiliki pohon folder, seperti ini (ini hanya sebuah contoh, ini akan lebih dalam pada kasus saya yang sebenarnya):
C:\test
|
+---folder1
| foo bar.txt
| foobar.txt
|
+---folder2
| foo bar.txt
| foobar.txt
|
\---folder3
foo bar.txt
foobar.txt
File saya memiliki satu atau lebih spasi dalam nama dan saya perlu melakukan perintah pada mereka, jadi saya tertarik pada foo bar.txt tetapi tidak di foobar.txt.
Saya mencoba (di dalam file batch):
for /r test %%f in (foo bar.txt) do if exist %%f echo %%f
di mana perintahnya sederhana echo
.
Tidak berfungsi karena ruang dilewati dan saya tidak mendapatkan output.
Ini berfungsi tetapi bukan itu yang saya butuhkan:
for /r test %%f in (foobar.txt) do if exist %%f echo %%f
Mencetak:
C:\test\folder1\foobar.txt
C:\test\folder2\foobar.txt
C:\test\folder3\foobar.txt
Saya mencoba menggunakan tanda kutip (") tetapi tidak berhasil:
for /r test %%f in ("foo bar.txt") do if exist %%f echo %%f
Tidak berfungsi karena tanda kutip masih termasuk dalam output:
C:\test\folder1\"foo bar.txt"
C:\test\folder2\"foo bar.txt"
C:\test\folder3\"foo bar.txt"
Tanpa sakelar rekursif, Anda dapat meminta
FOR
untuk tidak mencetak tanda kutip:Anda mungkin dapat melakukan
FOR
pernyataan bersarang . Bagian luar akan berjalan di pohon direktori dan bagian dalam akan menjadi yang di atas.sumber
FOR /R %%d in (.) DO for %%f ...
bersifat rekursif, tetapi akan ada beberapa hal yang bisa dilakukan untuk membuatnya berfungsi. Anda mungkin harus menggunakan ekspansi yang tertunda, misalnya.SETLOCAL ENABLEDELAYEDEXPANSION
dan!varname!
, dll.Anda mungkin ingin melihat perintah forfiles.
'/ S' - Rekursi. Cari semua sub direktori
'/ M "* *"' - Mask file. Hanya mencari file dengan spasi di namanya.
'/ C "cmd / C echo @PATH"' - Command. Terbitkan perintah ini pada semua file yang ditemukan.
Contoh output:
sumber
Bendera
f
adalah salah satu yang Anda butuhkan untuk mendapatkan tanda kutip tanpa nama file absolut (sehingga Anda dapat menempatkan tanda kutip jika Anda perlu). Tetapi karena bertentangan dengan nama variabel yang Anda pilih, Anda harus menggunakan yang lain:sumber
Terima kasih, Dennis! Saya juga sedang mengerjakan masalah yang hampir identik. Saya ingin file kelelawar yang bisa saya berikan dalam input parm sebagai string pencarian untuk nama file - secara rekursif melalui direktori. Kalau-kalau ini berguna bagi orang lain di sini.
sumber