2013-03-28 33 views
5

Tôi có một câu hỏi liên quan đến các tập tin batchhàng loạt tên tìm thư mục bên trong một thư mục

Vì vậy, bên trong một thư mục này, chúng ta hãy nói C: \ temp \ tôi có hai mục, một là một thư mục và một trong những khác một văn bản tệp có tên "list.txt"

Tôi làm cách nào để tìm tên thư mục?

Cảm ơn

Trả lời

3

Nếu bạn chỉ muốn liệt kê các thư mục con của thư mục hiện:

dir /ad /b 

Nếu bạn đang ở trong thư mục khác, bạn chỉ có thể làm:

dir c:\temp /ad /b 

/ad nghĩa danh sách tất cả các mục có thuộc tính "thư mục" và /b là định dạng trống

Cập nhật:

Giống như Bill đã nhận xét bên dưới, bạn có thể lặp qua đầu ra của lệnh cmd và đặt biến môi trường. Cạm bẫy ở đây là nếu có nhiều hơn một thư mục con, bạn sẽ không biết cái nào sẽ là "cuối cùng". Dưới đây là một ví dụ mà ra lệnh cho các thư mục theo tên (/ vào) và thiết lập môi trường MY_ENV_VAR biến để tên của thư mục con lần cuối:

for /f "delims=" %%a in ('dir "c:\temp" /on /ad /b') do @set MY_ENV_VAR=%%a 

Là một sang một bên, nếu bạn đang đi để được làm lập trình kịch bản nhiều hơn nữa , bạn có thể muốn đầu tư một số thời gian vào một số thông tin cơ bản về PowerShell, điều này mang lại cho bạn nhiều quyền kiểm soát có lập trình hơn.

Get-ChildItem | where {$_.PSIsContainer} 

Tôi thấy các tập lệnh theo lô sẽ bị làm phiền sau một thời gian.

+0

Tôi có thể lấy tên, sẽ có thể là một cách để lưu trữ này trong một biến? – emochoco

+2

Có. - cho/f "delims =" %% a in ('dir "c: \ temp"/ad/b') làm @set DIRNAME = %% a - Ghi chú: 1) Nếu có nhiều hơn một tên thư mục , chỉ cái cuối cùng sẽ được đặt trong biến DIRNAME. 2) Nếu gõ vào dòng lệnh cmd.exe, sử dụng% a thay vì %% a (hai% để sử dụng trong tập lệnh batch, một% khi gõ ở dòng lệnh). –

+0

Cảm ơn, nó hoạt động! – emochoco

2

Hãy thử điều này:

for /d /r "C:\temp" %%i in (*.*) do echo %%~i 
Các vấn đề liên quan