(Đầu tiên, tôi muốn giới thiệu trang web tham khảo hữu ích này cho đợt:
http://ss64.com/nt/ )
Sau đó, chỉ là một lời giải thích hữu ích khác: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
Biến% ~ dp0
Các% ~ dp0 (đó là một số không) biến khi tham chiếu trong một tập tin thực thi Windows sẽ mở rộng sang các d thư rive và p ATH của tập tin batch.
Các biến% 0-% 9 đề cập đến các tham số dòng lệnh của tệp bó. % 1-% 9 đề cập đến các đối số dòng lệnh sau tên tệp bó. % 0 đề cập đến chính tệp bó.
Nếu bạn theo dõi ký tự phần trăm (%) bằng ký tự dấu ngã (~), bạn có thể chèn (các) công cụ sửa đổi trước số tham số để thay đổi cách mở rộng biến. Công cụ sửa đổi d mở rộng thành ký tự ổ đĩa và công cụ sửa đổi p mở rộng theo đường dẫn của tham số.
Ví dụ: Giả sử bạn có một thư mục trên C: được gọi là bat_files và trong thư mục đó là một tệp có tên example.bat. Trong trường hợp này,% ~ dp0 (kết hợp bộ sửa đổi d và p) sẽ mở rộng thành C: \ bat_files.
Kiểm tra bài viết này của Microsoft để được giải thích đầy đủ.
Ngoài ra, kiểm tra chủ đề diễn đàn này .
Và một tài liệu tham khảo rõ ràng hơn từ đây :
%CmdCmdLine%
sẽ trả về toàn bộ dòng lệnh khi được chuyển đến CMD.EXE
%*
sẽ trả về phần còn lại của dòng lệnh bắt đầu từ đối số dòng lệnh đầu tiên (trong Windows NT 4,% * cũng bao gồm tất cả các khoảng trắng hàng đầu)
%~dn
sẽ trả về ký tự ổ đĩa của% n (n có thể nằm trong khoảng từ 0 đến 9) nếu% n là đường dẫn hoặc tên tệp hợp lệ (không có UNC)
%~pn
sẽ trả về thư mục của% n nếu% n là đường dẫn hoặc tên tệp hợp lệ (không có UNC)
%~nn
sẽ chỉ trả lại tên tệp của% n nếu% n là tên tệp hợp lệ
%~xn
sẽ chỉ trả về phần mở rộng tệp của% n nếu% n là tên tệp hợp lệ
%~fn
sẽ trả về đường dẫn đủ điều kiện của% n nếu% n là tên tệp hoặc thư mục hợp lệ
THÊM 1
Chỉ cần tìm thấy một số tài liệu tham khảo tốt cho các nhà điều hành dấu ngã bí ẩn ~
.
Các %~
chuỗi được gọi là phần trăm dấu ngã điều hành. Bạn có thể tìm thấy nó trong các tình huống như : %~0
.
Các :~
chuỗi được gọi là ruột dấu ngã điều hành. Bạn có thể tìm thấy nó như thế nào %SOME_VAR:~0,-1%
.
THÊM 2 - 1:12 PM ngày 7/6/2018
%1-%9
tham khảo dòng lệnh args. Nếu chúng không phải là giá trị đường dẫn hợp lệ, %~dp1
- %~dp9
tất cả sẽ mở rộng thành cùng giá trị như %~dp0
. Nhưng nếu chúng là các giá trị đường dẫn hợp lệ, chúng sẽ mở rộng thành giá trị trình điều khiển / đường dẫn của riêng chúng .
Ví dụ: (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
Chạy 1:
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
Chạy 2:
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\