เปลี่ยน Directory ปัจจุบันเป็น Batch File Directory


18

ฉันมีbatไฟล์บนหน้าต่างที่ดำเนินการProcDumpการดำเนินงาน ปัญหาของไฟล์แบตช์คือฉันต้อง cd ไปที่ไดเรกทอรีไฟล์แบตช์ก่อนที่จะดำเนินงานมิฉะนั้นสคริปต์จะไม่ทำงาน

จะเปลี่ยนเป็นไดเร็กทอรีไฟล์แบตช์ปัจจุบันได้อย่างไร?

ฉันลองรหัสต่อไปนี้ในของฉันprocdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

แต่มันล้มเหลวข้อความแสดงข้อผิดพลาดคือ:

การใช้งานตัวดำเนินการเส้นทางต่อไปนี้ในการทดแทนชุดพารามิเตอร์ไม่ถูกต้อง:% ~ dp "

สำหรับรูปแบบที่ถูกต้องพิมพ์ CALL /? หรือ FOR /?

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


คุณได้รับ "% ~ dp" จากที่ไหน
fretje

คำตอบ:


24

ตกลงฉันคิดว่าฉันพบที่นี่%~dpสิ่งที่คุณหมายกับ

ฉันคิดว่าสิ่งที่คุณต้องการทำคือ:

cd /D "%~dp0"

(!) แต่โปรดทราบว่านี่จะไม่ทำให้คุณมีพฤติกรรมที่ถูกต้องเมื่อคุณพยายามที่จะประมวลผลชุดของคุณในขณะที่ไดเรกทอรีปัจจุบันอยู่ในไดรฟ์อื่นเนื่องจากcdไม่เปลี่ยนไดรฟ์ที่ใช้งานอยู่

แก้ไข : เห็นได้ชัดว่า (ขอบคุณ@Yoopergeek ) คุณสามารถเพิ่ม/Dพารามิเตอร์ในcdคำสั่งเพื่อให้มันเปลี่ยนไดรฟ์ที่ใช้งานอยู่


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ชุดงานเหล่านี้ดูhelp callที่cmdพรอมต์
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

โดยวิธีการที่คุณสามารถรวมพารามิเตอร์เหล่านี้เช่น:%~dp0
หยุดชั่วคราวจนกว่าจะมีประกาศเพิ่มเติม

คำตอบของคุณมีประโยชน์ แต่ถ้าไดเรกทอรีปัจจุบันของฉันอยู่ที่ไดเรกทอรีอื่นที่แฟ้มแบตช์คำสั่งดังกล่าวจะล้มเหลว cd /Dหรือแม้แต่cd "%~dp0" /Dช่วยไม่ได้
Graviton

@ Ngu Soon Hui: dir ปัจจุบันของคุณอยู่ใน dir ที่แตกต่างจาก batch file อย่างชัดเจน แต่ทำไมคำสั่งนั้นถึงล้มเหลว? ฉันทดสอบที่นี่และใช้งานได้แล้ว
fretje

1
cd /D "%~dp0"ฉันได้พบวิธีการแก้ปัญหาโดยใช้ ขอบคุณ
Graviton

4

ฉันจะแสดงความคิดเห็นเพื่อตอบ fretje แต่เห็นได้ชัดว่าฉันไม่สามารถ ???


อย่างไรก็ตามเกี่ยวกับบันทึกย่อ:
แต่โปรดทราบว่านี่จะไม่ทำให้คุณมีพฤติกรรมที่ถูกต้องเมื่อคุณพยายามที่จะดำเนินการชุดของคุณในขณะที่ไดเรกทอรีปัจจุบันอยู่ในไดรฟ์อื่นเป็นแผ่นซีดีไม่เปลี่ยนไดรฟ์ที่ใช้งานอยู่


ใช้/Dสวิตช์ในคำสั่งซีดีของคุณและซีดีจะเปลี่ยนไดรฟ์ที่ใช้งานอยู่


... แต่ฉันสามารถแสดงความคิดเห็นในคำตอบของฉันเอง คนแย่ที่จะไม่มีตัวแทนใน ServerFault ... หวังว่าตัวแทนบางคน 'bled' ไปที่นี่
Yoopergeek

1
@Yoopergeek: คุณสามารถเชื่อมโยงบัญชีของคุณ นั่นจะให้ 100 ตัวแทนที่นี่ถ้าตัวแทนของคุณใน SO สูงกว่า 200
fretje
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.