2013-09-05 63 views
17

Tôi cần phải vượt qua dòng tham số AB CD vào tệp lô từ dòng lệnh. Tham số này đề cập đến tên tệp.Làm thế nào để vượt qua tham số dòng lệnh với không gian trong tệp hàng loạt

Nếu tôi sử dụng sử dụng AB CD kịch bản chỉ cần chọn phần đầu tiên và trở Unable to find the file AB.txt

Nếu tôi đặt quote xung quanh các thông số của tôi như "AB CD" tôi đã

"AB CD".txt 
Illegal characters in path. 

Trả lời

31

bạn có thể sử dụng% ~ 1 thay vì% 1

ví dụ như một test.bat với:

echo %~1 

sau đó một cuộc gọi đến test "abc de" sẽ hiển thị:

abc de 
+0

mà tôi tìm thấy từ câu hỏi này: http://stackoverflow.com/questions/473117/pass-path-with-spaces-as-parameter-to-bat-file – magdmartin

10

những gì bạn có thể làm là

>batch.bat "ab cd.txt" 

Khi tham số chứa khoảng trắng, bạn có thể đính kèm chúng trong dấu ngoặc kép.

+0

hai điều, tôi không thể thêm phần mở rộng trong các tham số của tôi vì nó được sử dụng ở đâu đó trong tập lệnh batch của tôi mà không có phần mở rộng của tệp. Thứ hai khi tôi thêm báo giá, có thêm vào tên tập tin (xem ví dụ cuối cùng của câu hỏi của tôi) – magdmartin

+0

Vâng, trong trường hợp đó, tôi đoán vấn đề không phải là với các tham số đi qua, đó là với các lập trình trong tập tin thực thi. Bạn có thể kiểm tra điều này bằng cách tạo một tệp lô đơn giản với dòng đơn giản này echo% 1, điều này sẽ lặp lại tên đầy đủ "ab cd". Nó có nghĩa là bạn đang truyền các tham số chính xác nhưng có một nơi nào đó trong tập tin thực thi nó không được xử lý đúng cách. Một nơi nào đó, nó đang cố gắng để tạo lại tên tập tin với phá vỡ nó ngoài và thêm phần mở rộng. –

+0

đồng ý. Tôi thực sự cần sử dụng% ~ 1 thay vì% 1 trong tập lệnh – magdmartin