2013-06-24 38 views
10

Tôi muốn chia chuỗi (có đường dẫn) với \ và lấy tên thư mục cuối cùng trong một biến. Hãy giúp tôi.đường dẫn tách và lấy tên thư mục cuối cùng trong tập lệnh theo lô

ví dụ
mypath = D: \ FOLDER1 \ folder2 \ FOLDER3 \

Tôi muốn FOLDER3 trong một biến.

Tôi đã thử với các lệnh dưới đây mà đang làm việc nếu ký tự cuối cùng không phải là \:

for %f in (C:\FOLDER1\FOLDER2\FOLDER3) do set myfolder=%~nxf 

Nó không phải là làm việc nếu ký tự cuối cùng là \

Ngoài ra nó không làm việc nếu biến được sử dụng như: cho% f trong (% mypath%) làm thiết Myfolder =% ~ nxf

Trả lời

20
@echo off 

set MYDIR=C:\FOLDER1\FOLDER2\FOLDER3\ 
set MYDIR1=%MYDIR:~0,-1% 

for %%f in (%MYDIR1%) do set myfolder=%%~nxf 
echo %myfolder% 

đầu ra

FOLDER3 
+0

Thank you very much. Mã này đang hoạt động theo yêu cầu của tôi. – user2013

+7

'% MYDIR: ~ 0, -1%' dường như là một số loại phương pháp chuỗi con, nhưng ai đó có thể giải thích những gì đang xảy ra trong vòng lặp? –

+2

có lần thiếu char cuối cùng trong thư mục! vì vậy nó thực sự không hoạt động. thư mục đầu vào: .. \ blalalalal \ Control-Freak trả về: Control-Frea – xamiro

11

thử:

for %f in (C:\FOLDER1\FOLDER2\FOLDER3\.) do set myfolder=%~nxf 

công trình cũng:

for %f in (C:\FOLDER1\FOLDER2\FOLDER3.) do set myfolder=%~nxf