2012-03-07 70 views
30

Hãy nói rằng tôi có các lệnh:Làm thế nào để thiết lập thư mục làm việc của một lệnh trong một tập tin batch Windows?

Prog1.exe 
D:\SomeDir\Prog2.exe 
Prog3.exe 

Bây giờ, nói cho dòng thứ hai, tôi muốn thư mục làm việc là D: \ SomeDir, nhưng trong Prog1.exe và Prog3.exe Tôi muốn mặc định thư mục làm việc (thông thường, nơi tệp .bat của tôi là). Nếu tôi thử điều này

Prog1.exe 
cd D:\SomeDir 
D:\SomeDir\Prog2.exe 
Prog3.exe 

Rõ ràng Prog3 sẽ được thực thi trong SomeDir, không phải là điều tôi muốn.

Trả lời

53

Bạn có thể sử dụng các lệnh pushd/popd (trợ giúp với pushd /?)

Prog1.exe 
Pushd D:\SomeDir 
Prog2.exe 
popd 
Prog3.exe 
10

Bạn có thể sử dụng lệnh cd (trợ giúp với cd /?) với% 0, đường dẫn tập tin bat, biến.

Prog1.exe 
cd D:\SomeDir 
Prog2.exe 
cd %dp0 
Prog3.exe 

Để biết danh sách đầy đủ% 0 người sửa đổi, hãy xem call /? hoặc for /? trợ giúp.

Tuy nhiên, tôi chỉ thêm điều này để cung cấp câu trả lời hoàn chỉnh hơn về Stack Overflow. Tôi sẽ KHUYẾN CÁO bằng cách sử dụng giải pháp của jeb ở trên.

6

gì làm việc cho tôi được thêm một /d:

cd /d C:\nginx 
ECHO Stopping nginx... 
start nginx -s quit 

(. Khi tôi không có /d, nó đã không làm việc)

https://stackoverflow.com/a/18310141/470749 cố gắng để giải thích nó.

+2

/d có nghĩa là gì? –

+4

@ СеменихинМаксим, Từ tài liệu: "Sử dụng công tắc/D để thay đổi ổ đĩa hiện tại ngoài việc thay đổi thư mục hiện tại cho một ổ đĩa." Về cơ bản, bạn luôn muốn chỉ định nó khi thay đổi dir thành đường dẫn tuyệt đối tùy ý. – Mikhail

Các vấn đề liên quan