belirli bir dizindeki tüm dosyaları ve dizinleri tam yolla ama özyinelemeli olarak nasıl listeleyebilirim?


14

Her nasılsa dir /bkomut gibi ama ben de orada gizli ve sistem dosyaları gerekir. Yerleşik dir komutu, bu tür 'gizli' dosyaları geri kalanıyla listelemeye izin vermez /sve elbette özyinelemesiz olan tam yol için kullanmalıyım .

lsKomutun windows sürümü ile de oynadım ve şans da yok. Tam yolu görüntülemek mydir\*için listelediğiniz dizinin sonuna yıldız işareti ( ) eklemelisiniz , ancak bu yinelemeli hale getirir.


1
Ben sorunun bir kısmını çözebilir: / a bayrak dir gizli ve sistem dosyalarını içerir yapar.
Harry Johnston

Yanıtlar:


9

Hiçbir şey yüklemek istemezseniz, aşağıdaki komutu da kullanabilirsiniz:

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

Önce cddizine girmelisiniz yoksa çalışmaz.


2
veya bu! içinde için / f "delims =" % b ( 'dir / b / a')% \% b @ECHO% cd yapmak Ama seninki ilginç bir tekniktir, oldukça geneldir
barlop

lütfen bu komutun nasıl çalıştığını açıklayabilir misiniz?
rubo77

18

Aşağıdaki komutu deneyin:

dir /s /b /a

TÜM dosyaları verecektir, isterseniz FINDbir klasör adı ekleyebilirsiniz veya çalıştırabilirsiniz .


1

Ls'yi denediyseniz, neden sadece cygwin'i yüklemiyorsunuz? Cygwin'de find komutunu kullanabilirsiniz:

find -name "*"

Cygwin'i yüklerseniz ve cygwin'de find kullanmak istiyorsanız, Windows'ta bir find.exe'ye sahip olduğundan, cygwin'deki bulmanın tam yol kullanarak çağrıldığından emin olun veya sistem32'den önce cygwin bin yolu ekleyin.


Ben unixutils kontrol, özyinelemeyi bulmak :(
rsk82

2
@ rsk82: ile -maxdepth 1değil.
Dennis

0

gnuwin32 ile sed indirebilirsiniz. Geçerli dizinin başına gelir.

% CD% Bunu yapmak .. değil iş yapar %cd:\=\\%her dönüştürür \için \\hangi sonuçların, \.

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

0

Bu eski bir soru, ama yine de bir şeyler ekleyeceğimi düşündüm.

DIR, özellikle C: 'de olmayanlar olmak üzere, istediğiniz dizin ağaçlarının her ikisini de doğru şekilde geçmez. Farklı korumalar nedeniyle yerlerde vazgeçer.

ATTRIB çok daha iyi çalışır, çünkü daha fazlasını bulur. (Neden bu fark? MS neden bir kamu hizmetinin bir şekilde, bir başka işin bu açıdan farklı olmasını sağlar? Biliyorsam lanet olsun.) Deneyimlerime göre, bir çamur olmasına rağmen, bunun için en etkili yol iki liste elde etmektir:

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

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

ve aralarındaki farkı elde edin. Bu fark C: 'deki dizinlerdir (çok iyi gizlenmiş olanlar hariç). C: için genellikle yönetici olarak çalışırdım.


0

Bir dizin listesi ile çalışmak istedim, bu yüzden "Bir Dizin Yazdır" Googled. Bunu yapmak için talimatlar buldum, ancak Kayıt Defteri'nde değişiklikler içeriyordu. Bununla uğraşmak istemiyor ve bir girişi kullanmak istiyor, yazdırmıyor, Kayıt Defterini değiştirmeden hedeflerime ulaşmanın bir yolunu buldum. Yardımcı Program Dizini'ne kaydedilecek iki toplu iş dosyası programı oluşturdum. Ardından, bir dizini yazdırmak veya onunla çalışmak istediğimde, uygun toplu iş dosyasını konu dizinine kopyalayıp yürütüyorum! İşte buradalar:

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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.