Chà, để có được tên tệp của đợt của bạn, cách dễ nhất là sử dụng %~n0
.
@echo %~n0
sẽ xuất tên (không có phần mở rộng) của tệp bó hiện đang chạy (trừ khi được thực thi trong chương trình con được gọi bởi call
). Có thể tìm thấy danh sách đầy đủ các thay thế đặc biệt của nhóm đối với các tên đường dẫn khác help for
, ở phần cuối của trợ giúp:
Ngoài ra, việc thay thế các tham chiếu biến FOR đã được tăng cường. Bây giờ bạn có thể sử dụng cú pháp tùy chọn sau:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
Các sửa đổi có thể được kết hợp để có được kết quả gộp:
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
Tuy nhiên, để trả lời chính xác câu hỏi của bạn: Các phần con được thực hiện bằng cách sử dụng :~start,length
ký hiệu:
%var:~10,5%
sẽ trích xuất 5 ký tự từ vị trí 10 trong biến môi trường %var%
.
GHI CHÚ: Chỉ số của các chuỗi là 0 dựa, vì vậy ký tự đầu tiên ở vị trí 0, thứ hai ở 1, v.v.
Để có được chuỗi con của các biến lập luận như %0
, %1
vv bạn phải gán chúng vào một biến môi trường bình thường sử dụng set
đầu tiên:
:: Does not work:
@echo %1:~10,5
:: Assign argument to local variable first:
set var=%1
@echo %var:~10,5%
Cú pháp thậm chí còn mạnh mẽ hơn:
%var:~-7%
trích xuất 7 ký tự cuối cùng từ %var%
%var:~0,-4%
sẽ trích xuất tất cả các ký tự ngoại trừ bốn ký tự cuối cùng cũng sẽ loại bỏ phần mở rộng tệp của bạn (giả sử ba ký tự sau dấu chấm [ .
]).
Xem help set
để biết chi tiết về cú pháp đó.
setlocal ENABLEDELAYEDEXPANSION \r\n for /f %%s in ('set') do ( \r\n set tmp=%%s \r\n echo !tmp:~-3! \r\n )