คุณสามารถใช้ตัวแปร %CD% ใน Windows batch file เพื่ออ้างถึง directory ปัจจุบันได้ครับ และเมื่อใช้ร่วมกับคำสั่ง cd ก็จะสามารถเปลี่ยน directory ไปยังตำแหน่งที่สคริปต์นั้นทำงานอยู่ได้
โดยปกติแล้ว เมื่อ batch file เริ่มทำงาน, current directory ของมันก็คือที่ที่ตัวไฟล์ .bat นั้นตั้งอยู่แล้ว แต่ในกรณีที่คุณต้องการแน่ใจว่าคำสั่งต่างๆ ที่จะรันต่อไปนั้นทำงานอยู่ใน directory ที่ถูกต้องเสมอ การใช้ cd /d "%~dp0" จะเป็นวิธีที่แน่นอนกว่า เพราะ %~dp0 จะขยายค่าเป็น drive และ path ของตัว batch file ที่กำลังทำงานอยู่เสมอ
@echo off REM แสดง directory ปัจจุบัน (ที่ที่ไฟล์ .bat ถูกเรียก) echo Current directory ตอนเริ่มต้น: %CD% REM เปลี่ยน directory ไปยังตำแหน่งที่ไฟล์ .bat นี้อยู่ REM ใช้ /d เพื่อให้สามารถเปลี่ยน drive ได้ด้วย (เช่น จาก C: ไป D:) cd /d "%~dp0" REM แสดง directory อีกครั้งหลังจากใช้คำสั่ง cd echo Current directory หลังจากใช้ cd: %CD% REM ตัวอย่างการเรียกใช้ไฟล์ใน directory เดียวกัน echo. echo Listing files in this directory: dir /b pause
คำอธิบาย
@echo off: ปิดการแสดงคำสั่งที่กำลังทำงานอยู่ (ทำให้หน้าจอ command prompt ดูสะอาด)%CD%: เป็น Environment Variable ที่เก็บค่า path ของ directory ปัจจุบันที่ command prompt กำลังทำงานอยู่%~dp0: เป็นตัวแปรพิเศษที่จะให้ผลลัพธ์เป็น drive letter และ path ของตัว batch file นั้นๆ%0: คือชื่อของ batch file~dp: เป็น modifier ที่บอกให้ขยายค่า%0ออกมาเป็น Drive (d) และ Path (p)
cd /d "%~dp0": เป็นคำสั่งที่แนะนำและใช้กันบ่อยที่สุดในการเปลี่ยน directory ไปยังตำแหน่งที่สคริปต์ทำงานอยู่ เพราะมันจะทำงานได้ถูกต้องเสมอ ไม่ว่าคุณจะรันสคริปต์นี้จากที่ไหนก็ตาม
หลักๆ คือ
cd /d “%~dp0″
เพราะนอกจาก ย้ายไป directory ที่ต้องการ ยังย้าย drive ได้ในคราวเดียว

