2010-04-28 20 views

Trả lời

103

Hãy thử gọi số .exe với %~dp0, như sau: %~dp0MyProgram.exe.

%0 chứa đường dẫn đầy đủ đến tệp được gọi là .bat.

~dp nói để lấy ổ đĩa và đường dẫn, bao gồm cả đường nhỏ \.

+2

+1 phiếu bầu chỉ tìm thấy liên kết này trên tìm kiếm của google - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file. aspx – house9

+0

Giải thích tốt, cảm ơn! – enderland

+12

Câu trả lời của Patrick Cuff ở trên hoạt động, nhưng không thành công nếu một phần của đường dẫn thư mục có dấu cách trong tên của nó. Để giải quyết vấn đề này, bạn cần đặt dấu nháy kép xung quanh cuộc gọi .exe. "% ~ dp0MyProgram.exe" –

0

có vẻ lạ? Tôi chưa từng làm việc trên cửa sổ cho đôi nhưng

bạn đã thử hàng đầu với có sự khác biệt ./

./program.exe

thực sự nên được? có thể là dơi đang thực hiện từ ngữ cảnh của C: \ Windows hoặc đã làm hàng loạt của bạn làm bất kỳ cd đến một thư mục khác tại một số điểm?

+0

Ý bạn là. \ (Tức là, dấu gạch chéo ngược). –

+0

Tôi nghĩ rằng khi tôi thực thi lô nó đang được thực hiện từ một thư mục khác. –

+1

Có lẽ câu hỏi của tôi là "làm thế nào để tăng gấp đôi nhấp vào một tập tin thực thi và làm cho nó thực hiện trong cùng một thư mục như nó?" –

11

Tôi đã giải quyết vấn đề này bằng cách thay đổi thư mục đang hoạt động bằng cách sử dụng pushd khi bắt đầu tập lệnh và khôi phục ở cuối tập lệnh bằng cách sử dụng popd. Bằng cách này, bạn luôn có thể giả định thư mục làm việc giống với vị trí của tệp dơi.

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd 
Các vấn đề liên quan