ไดเรกทอรีปัจจุบันในไฟล์แบทช์คืออะไร?


510

ฉันต้องการสร้างไฟล์แบทช์สองสามตัวเพื่อสร้างโปรแกรมอัตโนมัติ

คำถามของฉันคือเมื่อฉันสร้างไฟล์แบตช์ไดเรกทอรีปัจจุบันคืออะไร? มันเป็นไดเรกทอรีที่เป็นที่ตั้งของไฟล์หรือเป็นไดเรกทอรีเดียวกันที่ปรากฏในพรอมต์คำสั่งหรืออย่างอื่น?

คำตอบ:


1025

จากภายในไฟล์แบทช์ของคุณ:

  • %cd%อ้างถึงไดเรกทอรีทำงานปัจจุบัน (ตัวแปร)
  • %~dp0 อ้างถึงเส้นทางแบบเต็มไปยังไดเรกทอรีของแบตช์ไฟล์ (คงที่)
  • %~dpnx0และ%~f0ทั้งคู่อ้างถึงพา ธ เต็มไปยังไดเรกทอรีแบตช์และชื่อไฟล์ (คงที่)

ดูเพิ่มเติม: % ~ dp0 หมายถึงอะไรและทำงานอย่างไร


5
@ Јοеу - %0จะให้ชื่อของ subroutine ปัจจุบัน แต่%~dp0จะเสมอให้เส้นทางที่เต็มไปด้วยแฟ้มชุดการดำเนินการ
dbenham

77
ที่จริงแล้วดูเหมือนว่า% ~ dp0 ให้เส้นทางแบบเต็มไปยังไดเรกทอรีที่ไฟล์แบตช์การดำเนินการอยู่ใน.% ~ dpnx0 (ซึ่งเทียบเท่ากับ% ~ f0) ให้เส้นทางแบบเต็มไปยังไฟล์แบทช์ ดูrobvanderwoude.com/parameters.phpสำหรับรายละเอียดเพิ่มเติม
deadlydog

6
ดูรายละเอียดคำตอบที่ดีของคำถามที่คล้ายกัน: รับรายการอาร์กิวเมนต์ที่ส่งผ่านในสคริปต์ชุดงาน Windows (.bat)
olibre

1
น่าเสียดายที่เมื่อเรียกใช้เป็นกระบวนการจาก. net% ~ dp0 เป็นไดเรกทอรีที่ใช้งานไม่ใช่ไดเรกทอรีของแฟ้มชุดงานพบสิ่งนี้ได้ยาก
จรจัด

3
เป็นตัวอย่างที่ชัดเจนยิ่งขึ้นเมื่อคลิกขวาที่.cmdไฟล์และเรียกใช้ในฐานะผู้ดูแลระบบ%cd%จะให้C:\WINDOWS\system32และ%~dp0มอบไดเรกทอรีไฟล์แบตช์ที่มีเครื่องหมายสแลชต่อท้าย
icc97

25

โดยปกติจะเป็นไดเรกทอรีที่ไฟล์แบตช์เริ่มต้น แต่ถ้าคุณเริ่มไฟล์แบตช์จากทางลัดไดเรกทอรีเริ่มต้นที่แตกต่างกันอาจได้รับ นอกจากนี้เมื่อ you'r ใน cmd และไดเรกทอรีปัจจุบันของคุณคือc:\dir3คุณยังสามารถเริ่มต้นแฟ้มชุดใช้ซึ่งในกรณีนี้ไดเรกทอรีปัจจุบันจะc:\dir1\dir2\batch.batc:\dir3


11

ในแฟ้มแบตช์% cd% เป็นคำสั่งที่ใช้บ่อยที่สุดสำหรับไดเรกทอรีปัจจุบันแม้ว่าคุณจะสามารถตั้งค่าตัวแปรของคุณเอง:

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)

ถ้าคุณต้องการเปิด Myprog.exe หากอยู่ในโฟลเดอร์เดียวกันคุณจะใช้คำสั่ง:

start %mypath%\Myprog.exe

ที่จะเปิด Myprog จากโฟลเดอร์ปัจจุบัน

ตัวเลือกอื่นคือสร้างไดเรกทอรีใน C: เรียกว่า AutomatePrograms จากนั้นคุณถ่ายโอนไฟล์ของคุณไปยังโฟลเดอร์นั้นจากนั้นคุณสามารถเปิดได้โดยใช้คำสั่งต่อไปนี้:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

1
ดังที่ระบุไว้ในคำตอบด้านบนที่นี่%cd%เป็นตัวแปรดังนั้นการเรียกใช้ไฟล์แบตช์จาก Windows Explorer ในฐานะผู้ดูแลระบบจะให้C:\WINDOWS\system32ซึ่งเกือบจะไม่แน่นอนสิ่งที่คุณต้องการ %~dp0มีความสอดคล้องมากขึ้น
icc97

6

สมมติว่าคุณกำลังเปิดไฟล์ในไดเรกทอรีปัจจุบันของคุณ คำสั่งจะเป็น:

 start %cd%\filename.filetype

ฉันหวังว่าฉันจะตอบคำถามของคุณ


5

มันเป็นไดเรกทอรีจากที่คุณเรียกใช้คำสั่งเพื่อรันไฟล์แบตช์ของคุณ

ดังที่กล่าวไว้ในคำตอบข้างต้นคุณสามารถเพิ่มคำสั่งด้านล่างลงในสคริปต์ของคุณเพื่อตรวจสอบ:

> set current_dir=%cd%
> echo %current_dir%  

4

มันเป็นไดเรกทอรีที่คุณเริ่มแบตช์ไฟล์ เช่นถ้าชุดของคุณอยู่ในc:\dir1\dir2และคุณแล้วใช้ชุดไดเรกทอรีปัจจุบันจะมีcd c:\dir3c:\dir3


0

แค่ 2 เซ็นต์ของฉัน คำสั่งต่อไปนี้ล้มเหลวหากเรียกจากไฟล์แบตช์ (Windows 7) ที่อยู่ใน pendrive:

xcopy /s /e /i %cd%Ala C:\KS\Ala

แต่นี่ทำงานได้:

xcopy /s /e /i %~dp0Ala C:\KS\Ala

นี่เป็นสวิตช์ที่ฉันกำลังค้นหาเพื่อกำหนดพา ธ ไดเร็กทอรีพาเรนต์ของไฟล์ bat ของฉันโดยไม่มีชื่อไฟล์แบตช์:%~dp0
Ammar Mohammad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.