Vâng, chỉ cần lấy tên tệp của lô của bạn, cách dễ nhất là chỉ 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 là call
). Danh sách đầy đủ như vậy thay thế “đặc biệt” cho tên đường dẫn có thể được tìm thấy với help for
, vào cuối sự giúp đỡ:
Bên cạnh đó, thay thế CHO tài liệu tham khảo biến đã được tăng cường. Bây giờ bạn có thể sử dụng tùy chọn cú pháp 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 bổ trợ có thể kết hợp để có được kết quả hợp chất:
%~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
Để trả lời chính xác câu hỏi của bạn, tuy nhiên: chuỗi con được thực hiện bằng ký hiệu :~start,length
:
%var:~10,5%
sẽ trích xuất 5 ký tự từ vị trí 10 trong biến môi trường %var%
.
LƯU Ý: Các chỉ số của chuỗi là không dựa, do đó ký tự đầu tiên là ở vị trí 0, thứ hai tại 1, vv
Để 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 hơn:
%var:~-7%
chiết xuất 7 ký tự cuối cùng từ %var%
%var:~0,-4%
sẽ trích xuất tất cả các nhân vật ngoại trừ cuối bốn mà cũng sẽ giúp bạn thoát khỏi phần mở rộng tập tin (giả sử ba nhân vật sau giai đoạn [.
]).
Xem help set
để biết chi tiết về cú pháp đó.
Đó là câu trả lời tuyệt vời, toàn diện. Cảm ơn rất nhiều. – JosephStyons
Vâng, bây giờ, ba câu trả lời được chuyển thành một hoặc nhiều hơn, nhờ Patrick :) – Joey
Trích xuất chuỗi con không hoạt động với biến vòng FOR, do đó bạn sẽ phải thực hiện như sau (\ r \ n trong dòng có nghĩa là mã ngắt vì SO dường như không cho phép ngắt dòng trong nhận xét): 'setlocal ENABLEDELAYEDEXPANSION \ r \ n cho/f %% s trong ('set') làm (\ r \ n \t set tmp = %% s \ r \ n \t echo! Tmp: ~ -3! \ R \ n ) ' – Fr0sT