Làm thế nào để liệt kê tất cả các tập tin và thư mục trong thư mục đã cho với đường dẫn đầy đủ nhưng không đệ quy?


14

Bằng cách nào đó giống như dir /blệnh nhưng tôi cũng cần ẩn và các tập tin hệ thống ở đó. Lệnh dir được xây dựng không cho phép liệt kê các tệp 'ẩn' như vậy với phần còn lại và tôi phải sử dụng /sđể có đường dẫn đầy đủ trong đó, tất nhiên là không đệ quy.

Tôi cũng đã chơi với phiên bản windows của lslệnh và cũng không có may mắn. Để hiển thị đường dẫn đầy đủ, bạn phải thêm dấu hoa thị ( mydir\*) ở cuối thư mục bạn đang liệt kê, nhưng điều này làm cho nó đệ quy.


1
Tôi có thể giải quyết một phần vấn đề của bạn: cờ / a làm cho dir bao gồm các tệp hệ thống và ẩn.
Harry Johnston

Câu trả lời:


9

Nếu bạn không muốn cài đặt bất cứ thứ gì, bạn cũng có thể sử dụng lệnh sau:

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

Bạn phải cdvào thư mục trước nếu không nó sẽ hoạt động.


2
hay cái này for / f "delims ="% b in ('dir / b / a') do @echo% cd% \% b Nhưng của bạn là một kỹ thuật thú vị, khá chung chung
barlop

bạn có thể giải thích, làm thế nào lệnh này hoạt động?
rubo77

18

Hãy thử lệnh sau:

dir /s /b /a

Nó sẽ cung cấp TẤT CẢ các tệp, bạn có thể chạy nó FINDnếu bạn muốn hoặc thêm tên thư mục.


1

Nếu bạn đã thử ls, tại sao không chỉ cài đặt cygwin? Bạn có thể sử dụng find trong cygwin:

find -name "*"

Nếu bạn đã cài đặt cygwin và muốn sử dụng find trong cygwin, hãy đảm bảo rằng find trong cygwin được gọi bằng cách sử dụng đường dẫn đầy đủ hoặc chèn đường dẫn cygwin bin trước system32 vì Windows cũng có find.exe.


tôi đã kiểm tra unixutils, tìm thấy đệ quy :(
rsk82

2
@ rsk82: Với -maxdepth 1, không phải vậy.
Dennis

0

bạn có thể tải về sed với gnuwin32. Điều này chuẩn bị thư mục hiện tại.

Làm% cd% không hoạt động .. vì vậy %cd:\=\\%chuyển đổi mọi \thành \\, kết quả là \.

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

0

Đây là một câu hỏi cũ, nhưng tôi nghĩ dù sao tôi cũng muốn thêm một cái gì đó.

DIR không đi qua chính xác tất cả các cây thư mục bạn muốn, đặc biệt không phải là những cây trên C :. Nó chỉ đơn giản là bỏ cuộc ở những nơi vì sự bảo vệ khác nhau.

ATTRIB hoạt động tốt hơn nhiều, bởi vì nó tìm thấy nhiều hơn. (Tại sao lại có sự khác biệt này? Tại sao MS làm cho một tiện ích hoạt động theo một cách và một công việc khác khác về mặt này?

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

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

và có được sự khác biệt giữa chúng. Sự khác biệt đó là các thư mục trên C: (ngoại trừ những thư mục được ẩn quá kỹ). Đối với C:, tôi thường làm điều này với tư cách quản trị viên.


0

Tôi muốn làm việc với một danh sách thư mục, vì vậy tôi đã làm cho "In một thư mục". Tôi đã tìm thấy hướng dẫn để làm như vậy, nhưng chúng bao gồm các thay đổi đối với Cơ quan đăng ký. Không muốn giải quyết vấn đề này và muốn sử dụng một danh sách, không in nó, tôi đã tìm ra cách để đáp ứng mục tiêu của mình mà không cần thay đổi Sổ đăng ký. Tôi đã tạo hai chương trình tệp bó sẽ được lưu trong Thư mục tiện ích. Sau đó, khi tôi muốn in hoặc làm việc với một thư mục, tôi chỉ cần sao chép tệp bó thích hợp vào thư mục chủ đề, sau đó thực hiện nó! Họ đây rồi:

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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.