Ai nói bạn không thể thêm dấu ngoặc kép quanh đường dẫn exe khi lệnh/C đã được trích dẫn? Nó hoạt động tốt ! :-)
start cmd.exe /k ""C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate" & cd d:\home\name\addon\ & cfx run"
Dấu ngoặc kép bên ngoài xung quanh/C được xóa trước khi thực thi, chỉ để lại dấu ngoặc kép quanh đường dẫn exe của bạn. Bạn có thể đọc về cách CMD xử lý dấu ngoặc kép trong trợ giúp. Chỉ cần nhập CMD /?
hoặc HELP CMD
từ lời nhắc lệnh. Nó không gây nhầm lẫn.
If /C or /K is specified, then the remainder of the command line after
the switch is processed as a command line, where the following logic is
used to process quote (") characters:
1. If all of the following conditions are met, then quote characters
on the command line are preserved:
- no /S switch
- exactly two quote characters
- no special characters between the two quote characters,
where special is one of: &<>()@^|
- there are one or more whitespace characters between the
two quote characters
- the string between the two quote characters is the name
of an executable file.
2. Otherwise, old behavior is to see if the first character is
a quote character and if so, strip the leading character and
remove the last quote character on the command line, preserving
any text after the last quote character.
Lệnh của bạn có nhiều hơn 2 dấu ngoặc kép, vì vậy tùy chọn 2 được theo sau.
Lần duy nhất bên trên không hoạt động nếu tên exe của bạn chứa một ký tự đặc biệt như &
, ví dụ: this&that.exe
. Điều đó gây ra một vấn đề vì tên exe không được trích dẫn khi lệnh START được phân tích cú pháp ban đầu. Điều đó có thể được sửa bằng cách thoát ký tự vấn đề bên trong tên tệp.
start cmd.exe /k ""this^&that.exe" & echo something else"
Đơn & làm gì? – Bill
Đây là dấu tách cho lệnh cmd. – Qiao
nếu bạn không thể đưa mỗi người một cách riêng biệt? ví dụ. bắt đầu cmd.exe/k "lệnh 1" & "lệnh 2", sau đó có thể bạn nên đặt các lệnh đó trong một tệp .bat riêng biệt và chỉ chạy nó. – Bill