Tôi cần tên cơ sở + phần mở rộng của tệp trong đường dẫn tương đối trong môi trường variale


0

Tôi cần tên cơ sở + phần mở rộng của một tệp trong một đường dẫn tương đối trong môi trường variale. Ví dụ: nếu tôi nhập vào đối số ..\..\Appdata\bin\test.jpgthì var môi trường kết quả sẽ chứa test.jpg. Nếu tôi gõ một đối số của sript bat như thế sub1\sub2\input.png, nó sẽ chứa input.png. Điều này có thể được thực hiện với một câu lệnh for, với delims=\và chọn cho trường LAST. Tôi không biết cách chọn trường cuối cùng.

Câu trả lời:


1

Trong bài viết Batch Extract path và tên tệp từ một biến được tìm thấy tập lệnh này để trích xuất tất cả các phần của tệp từ một biến môi trường:

@ECHO OFF
SETLOCAL
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
FOR %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)

Và danh sách đầy đủ để trích xuất thông tin từ tham số đầu tiên của .battập lệnh:

%~1 - expands %1 removing any surrounding quotes (")
%~f1 - expands %1 to a fully qualified path name
%~d1 - expands %1 to a drive letter only
%~p1 - expands %1 to a path only
%~n1 - expands %1 to a file name only
%~x1 - expands %1 to a file extension only
%~s1 - expanded path contains short names only
%~a1 - expands %1 to file attributes
%~t1 - expands %1 to date/time of file
%~z1 - expands %1 to size of file

Mà có thể được sử dụng, ví dụ:

set file=%~f1
set filepath=%~dp1
set filename=%~nx1

Hoặc như một biến FOR cục bộ:

for %%a in (..\Desktop\fs.cfg) do (
    set file=%%~fa
    set filepath=%%~dpa
    set filename=%%~nxa
)    
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.