Một số vấn đề cần chú ý:
Nếu bạn bấm đúp vào tệp bó %0sẽ đượ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 đó, %0sẽ tham chiếu đến bất cứ điều gì bạn đã nhập . Nếu bạn nhập test.batEnter, đầu ra của %0sẽ 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 testEnter, đầu ra của %0sẽ 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 tEsTEnter:
c:\>tEsT
tEsT
Nếu bạn nhập "test"Enter, đầu ra của %0sẽ 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ị %0có 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 %~0chỉ đơn giản là đầu ra của %0 dấu ngoặc kép (nếu có).
echo %~dp0sẽ không hoạt động ở dòng lệnh, chỉ trong một tệp bó. Tât nhiên!