Một số vấn đề cần chú ý:
Nếu bạn bấm đúp vào tệp bó %0
sẽ được bao quanh bởi dấu ngoặc kép. Ví dụ: nếu bạn lưu tệp này dưới dạng c:\test.bat
:
@echo %0
@pause
Bấm đúp vào nó sẽ mở ra một dấu nhắc lệnh mới với đầu ra:
"C:\test.bat"
Nhưng nếu trước tiên bạn mở một dấu nhắc lệnh và gọi nó trực tiếp từ dấu nhắc lệnh đó, %0
sẽ tham chiếu đến bất cứ điều gì bạn đã nhập . Nếu bạn nhập test.bat
Enter, đầu ra của %0
sẽ không có dấu ngoặc kép vì bạn đã gõ không có dấu ngoặc kép:
c:\>test.bat
test.bat
Nếu bạn nhập test
Enter, đầu ra của %0
sẽ không có phần mở rộng, vì bạn đã gõ không có phần mở rộng:
c:\>test
test
Tương tự cho tEsT
Enter:
c:\>tEsT
tEsT
Nếu bạn nhập "test"
Enter, đầu ra của %0
sẽ có dấu ngoặc kép (vì bạn đã nhập chúng) nhưng không có phần mở rộng:
c:\>"test"
"test"
Cuối cùng, nếu bạn nhập "C:\test.bat"
, đầu ra sẽ chính xác như thể bạn đã nhấp đúp vào nó:
c:\>"C:\test.bat"
"C:\test.bat"
Lưu ý rằng đây không phải là tất cả các giá trị %0
có thể có thể là do bạn có thể gọi tập lệnh từ các thư mục khác:
c:\some_folder>/../teST.bAt
/../teST.bAt
Tất cả các ví dụ hiển thị ở trên cũng sẽ ảnh hưởng %~0
, bởi vì đầu ra của %~0
chỉ đơn giản là đầu ra của %0
dấu ngoặc kép (nếu có).
echo %~dp0
sẽ không hoạt động ở dòng lệnh, chỉ trong một tệp bó. Tât nhiên!