bagaimana daftar semua file dan direktori dalam direktori yang diberikan dengan path lengkap tetapi tidak rekursif?

14

Entah bagaimana suka dir /bperintah tapi saya juga perlu menyembunyikan dan sistem file di sana. Perintah built in dir tidak memungkinkan untuk mendaftar file 'tersembunyi' seperti itu dengan yang lain dan saya harus menggunakan /suntuk memiliki path lengkap di sana, yang tentu saja tidak rekursif.

Saya juga bermain dengan versi Windows dari lsperintah dan tidak ada keberuntungan. Untuk menampilkan path lengkap Anda harus menambahkan asterisk ( mydir\*) di akhir direktori yang Anda daftarkan, tetapi ini membuatnya rekursif.

rsk82
sumber
1
Saya dapat memecahkan bagian dari masalah Anda: flag / a membuat dir menyertakan file sistem dan tersembunyi.
Harry Johnston

Jawaban:

9

Jika Anda tidak ingin menginstal apa pun, Anda juga dapat menggunakan perintah berikut:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

Anda harus cdmasuk ke direktori terlebih dahulu atau tidak akan berfungsi.

Dennis
sumber
2
atau ini! untuk / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Tapi milikmu adalah teknik yang menarik, cukup umum
barlop
Bisakah Anda jelaskan, bagaimana cara kerja perintah ini?
rubo77
18

Coba perintah berikut:

dir /s /b /a

Ini akan memberikan SEMUA file, Anda dapat menjalankannya FINDjika Anda ingin atau menambahkan nama folder.

bjkamp
sumber
1

Jika Anda mencoba ls, mengapa tidak menginstal cygwin saja? Anda dapat menggunakan find di cygwin:

find -name "*"

Jika Anda menginstal cygwin dan ingin menggunakan find di cygwin, pastikan find di cygwin dipanggil dengan menggunakan path lengkap atau masukkan path cygwin bin sebelum system32 karena Windows juga memiliki find.exe.

Codism
sumber
saya memeriksa unixutils, temukan adalah rekursif :(
rsk82
2
@ rsk82: Dengan -maxdepth 1, tidak.
Dennis
0

Anda bisa mengunduh sed dengan gnuwin32. Ini mendahului direktori saat ini.

Melakukan% cd% tidak berfungsi .. jadi %cd:\=\\%konversikan setiap \ke \\, yang menghasilkan \.

C:\WINDOWS>dir /b | sed "s/^/%cd:\=\\%\\/" 
C:\WINDOWS\0.log
C:\WINDOWS\003109_.tmp
C:\WINDOWS\addins
barlop
sumber
0

Ini pertanyaan lama, tapi saya pikir saya akan menambahkan sesuatu.

DIR tidak melintasi dengan benar semua pohon direktori yang Anda inginkan, khususnya yang ada di C :. Itu hanya menyerah di tempat karena perlindungan yang berbeda.

ATTRIB bekerja lebih baik, karena ia menemukan lebih banyak. (Mengapa perbedaan ini? Mengapa MS membuat satu utilitas bekerja satu arah dan pekerjaan lain berbeda dalam hal ini? Terkutuk jika saya tahu.) Dalam pengalaman saya cara paling efektif untuk menangani ini, meskipun itu adalah kludge, adalah untuk mendapatkan dua daftar:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

dan dapatkan perbedaan di antara mereka. Perbedaannya adalah direktori pada C: (kecuali yang terlalu tersembunyi). Untuk C :, saya biasanya menjalankan ini sebagai administrator.

djc
sumber
0

Saya ingin bekerja dengan daftar direktori, jadi saya mencari di Google "Cetak Direktori". Saya menemukan instruksi untuk melakukannya, tetapi mereka menyertakan perubahan pada Registry. Tidak ingin berdebat dengan ini, dan ingin menggunakan daftar, tidak mencetaknya, saya menemukan cara untuk memenuhi tujuan saya tanpa mengubah Registry. Saya membuat dua program file batch untuk disimpan dalam Direktori Utilitas. Kemudian, ketika saya ingin mencetak atau bekerja dengan direktori, saya hanya menyalin file batch yang sesuai ke direktori subjek, kemudian jalankan! Di sini mereka:

rem PrintThisDirectory.bat
rem Prints the directory where it resides
@echo off
dir %1/-p/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"

Rem ShowThisDirectory.bat
Rem Displays in Notepad the Directory where it resides
@echo off
dir %1/o:gn> "%temp%\listing"
start /w notepad "%temp%\listing"
Roger Bohl
sumber