2012-05-01 43 views
21

Làm cách nào để lấy tên tệp từ chuỗi này?Lấy tên tệp từ đường dẫn chuỗi?

"C:\Documents and Settings\Usuario\Escritorio\hello\test.txt" 

đầu ra:

"test.txt" 

tôi thực sự cố gắng để tìm thấy một điều này trước khi đăng, nhưng tất cả các kết quả bị ô nhiễm, họ nói chuyện về việc tên tập tin từ thư mục hiện hành (Tôi phải làm việc với chỉ chuỗi)

+0

'cd' vào thư mục đó và gõ' dir/b' – Marc

+0

@Marc thứ tại chuỗi được tạo ra với một vòng lặp, tôi nghĩ rằng truy cập 200-300 dirs không phải là khôn ngoan. Tôi thực sự phải làm việc dây chỉ, nhưng cảm ơn cho các thay thế – ajax333221

+0

Xem câu trả lời mới của tôi – Marc

Trả lời

43

Phương pháp 1

for %%F in ("C:\Documents and Settings\Usuario\Escritorio\hello\test.txt") do echo %%~nxF 

Nhập HELP FOR để biết thêm thông tin.

Phương pháp 2

call :sub "C:\Documents and Settings\Usuario\Escritorio\hello\test.txt" 
exit /b 

:sub 
echo %~nx1 
exit /b 

Loại HELP CALL để biết thêm.

+0

xin vui lòng, bạn có thể giải thích "% ~ nx1"? –

+0

@ Yukulélé - Nó sửa đổi phần mở rộng của '% 1', coi nó là một đường dẫn tệp và mở rộng đến tên và phần mở rộng, bỏ qua ổ đĩa và đường dẫn. Gõ 'HELP CALL' hoặc' CALL /? 'Từ dấu nhắc lệnh để biết thêm thông tin về tất cả các biến tố mở rộng tham số. – dbenham

+3

cảm ơn, tôi đã tìm thấy thêm chi tiết tại đây http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –

5

Giả sử bạn cần có tên của file dưới "c: \ temp" cây thư mục (bao gồm cả thư mục con):

FOR /R c:\temp %i in (*.*) do echo %~nxi 
4

nếu con đường của bạn đến như là một tham số, chỉ cần sử dụng:

% ~ Nx1 (1 là cho param đầu tiên và chúng tôi cho rằng đó là cái đầu tiên)

echo% ~ Nx1 sẽ trở lại trực tiếp test.txt

+1

Tôi chỉ cần điều này rất tệ và cho trường hợp cụ thể đó (như tham số), nó ngắn hơn và thanh lịch hơn nhiều. – stormofwar

Các vấn đề liên quan