Bagaimana cara mendaftarkan nama file secara rekursif (hanya) di DOS / Windows? [duplikat]

20

Kemungkinan Duplikat:
Dapatkan nama file kosong secara rekursif di command prompt

Saya ingin mendaftarkan semua file secara rekursif dalam direktori, hanya menampilkan nama file (tanpa ekstensi dan tanpa path lengkap). Saya menggunakan Windows / DOS.

Yang paling dekat dengan saya diradalah dir /s /b, tetapi daftar jalur lengkap dan juga menunjukkan ekstensi.

Yah, mungkin saya bisa hidup dengan ekstensi, tetapi saya harus menyingkirkan jalan!

Ada ide?

David B
sumber
1
Versi windows yang mana?
OldWolf
OOldWolf: XP. Saya lebih suka tidak menggunakan perangkat lunak pihak ketiga /
David B

Jawaban:

28
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

Jika Anda perlu daftar disimpan ke file, tambahkan >> C:\Path\To\list_file.txtke akhir forperintah.

Jika Anda akhirnya menginginkan ekstensi, ubah %~nike%~nxi

Untuk digunakan dalam file batch, ubah semua %ke%%

lebih gila
sumber
6
Jika Anda memerlukan path dan nama dan ekstensi, ubah% ~ ni menjadi% ~ pnxi
Jauh
ini berfungsi tetapi tidak menampilkan file tersembunyi. Bagaimana saya bisa melihat file yang disembunyikan?
ala
@ala: Jika Anda ingin menampilkan file tersembunyi, Anda harus menggunakan sesuatu seperti jawaban David Remy hanya dengan tanda yang sesuai diteruskan ke dirperintah.
afrazier
7

Jika Anda bersedia memuat PowerShell, perintah ini harus melakukannya.

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
uSlackr
sumber
5

Melakukan sesuatu seperti berikut ini akan memberi Anda apa yang Anda inginkan:

@for /f "delims=" %a in ('Dir /s /b %systemdrive%') do echo %~na

Hanya pipa output ke file dan gunakan dari sana jika diperlukan.

David Remy
sumber
3

Tidak tahu apakah Anda akan menganggapnya perangkat lunak pihak ke-3 atau tidak karena merupakan bentuk Microsoft dan dilengkapi dengan 7, tetapi PowerShell akan menyelesaikan sebagian besar masalah Anda dengan mudah. Jika Anda belum menginstalnya, tersedia untuk XP di situs Microsoft.

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
Serigala tua
sumber