Thay đổi thư mục hiện tại thành thư mục hàng loạt


18

Tôi có một battập tin trên windows thực hiện thao tác procdump . Vấn đề với tệp bó là tôi cần cd vào thư mục tệp bó trước khi thực hiện công việc, nếu không thì tập lệnh sẽ không hoạt động.

Làm thế nào để thay đổi thư mục tập tin hiện tại?

Tôi đã thử đoạn mã sau trong procdump.bat:

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

Nhưng nó thất bại, thông báo lỗi là:

Cách sử dụng sau đây của toán tử đường dẫn trong thay thế tham số lô không hợp lệ:% ~ dp "

Đối với định dạng hợp lệ, gõ CALL /? hoặc là /?

Chỉnh sửa: Câu trả lời được cung cấp đang hoạt động, nhưng chỉ có một lưu ý: nếu thư mục hiện tại của tôi khác với thư mục tệp bó, thì tôi sẽ nhận được "Hệ thống không thể tìm thấy đường dẫn được chỉ định". Bất cứ ai có ý tưởng?


Bạn lấy "% ~ dp" đó từ đâu?
fretje

Câu trả lời:


24

Ok, tôi nghĩ rằng tôi tìm thấy ở đây những gì bạn có ý nghĩa với %~dp.

Tôi nghĩ những gì bạn thực sự muốn làm là đây:

cd /D "%~dp0"

(!) Nhưng lưu ý rằng điều này vẫn sẽ không cung cấp cho bạn hành vi đúng khi bạn đang cố thực thi lô của mình trong khi thư mục hiện tại nằm trên một ổ đĩa khác vì cdkhông thay đổi ổ đĩa hoạt động.

Chỉnh sửa : Rõ ràng (cảm ơn @Yoopergeek ) bạn có thể thêm /Dtham số vào cdlệnh để cho phép nó cũng thay đổi ổ đĩa hoạt động.


Để biết thêm thông tin về các tham số lô này, xem help calltại cmddấu nhắc.
Tạm dừng cho đến khi có thông báo mới.

Nhân tiện, bạn có thể kết hợp các tham số như thế này:%~dp0
Tạm dừng cho đến khi có thông báo mới.

Câu trả lời của bạn rất hữu ích; nhưng nếu thư mục hiện tại của tôi ở một thư mục khác là tệp bó, thì lệnh trên sẽ thất bại; thậm chí cd /Dhoặc cd "%~dp0" /Dkhông thể giúp đỡ.
Graviton

@Ngu Soon Hui: Rằng thư mục hiện tại của bạn ở một thư mục khác với tệp bó là rõ ràng. Nhưng tại sao lệnh đó lại thất bại? Tôi đã thử nó ở đây và nó hoạt động.
fretje

1
Tôi đã tìm thấy giải pháp bằng cách sử dụng cd /D "%~dp0". Cảm ơn.
Graviton

4

Tôi sẽ để lại một bình luận cho câu trả lời của Fretje, nhưng rõ ràng là tôi không thể ???


Dù sao, liên quan đến ghi chú:
Nhưng lưu ý rằng điều này vẫn sẽ không cung cấp cho bạn hành vi đúng khi bạn đang cố thực hiện lô của mình trong khi thư mục hiện tại nằm trên một ổ đĩa khác vì cd không thay đổi ổ đĩa hoạt động.


Sử dụng công /Dtắc trong lệnh CD của bạn và CD sẽ thay đổi ổ đĩa hoạt động.


... nhưng tôi có thể nhận xét về câu trả lời của riêng tôi. Man, thật tệ khi không có đại diện trên ServerFault ... mong muốn một số đại diện SO 'đổ lỗi' ở đây.
Yoopergeek

1
@Yoopergeek: bạn có thể liên kết các tài khoản của bạn. Điều đó sẽ cung cấp cho bạn 100 đại diện tại đây nếu đại diện của bạn trên SO cao hơn 200.
fretje
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.