Current Directory ใน BAT File

Current Directory ใน BAT File

คุณสามารถใช้ตัวแปร %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 ได้ในคราวเดียว