Sự khác biệt giữa các tập lệnh cmd sau đây là gì?


10

Tôi đã thử khởi chạy một số chương trình thông qua một tệp bó và gặp phải sự cố nhưng đó là quá khứ.

Tôi còn khá mới đối với các tập lệnh và dòng lệnh và đây sẽ là câu hỏi của tôi: sự khác biệt giữa các tập lệnh cmd sau đây là gì?

Cái này được chấp nhận

Start Chrome

(Tôi đoán ở đây rằng một số chương trình đã cài đặt được nhận dạng theo tiêu đề, mặc dù thư mục không phải là nơi chrome.exe là chương trình vẫn khởi chạy, các khóa đăng ký có đóng vai trò này không?)

cái này cũng hoạt động

cd "FOO_DIR"
start FOO.exe

tuy nhiên những điều này không

start "FOO_DIR\FOO.exe"

(mở một cửa sổ mới mà không khởi chạy FOO.exe)

start /B "FOO_DIR\FOO.exe"

(viết văn bản bản quyền một lần nữa và không làm gì khác)

(Hệ điều hành Windows 7 x64)

Câu trả lời:


17
Start Chrome

Cái này hoạt động được, vì thực thi của Chrome nằm trong một thư mục nằm trong PATHbiến môi trường. starttìm kiếm các chương trình trong tất cả các thư mục trong biến đó. Biến môi trường PATHEXTchứa danh sách các phần mở rộng tệp cần tìm và .exetheo mặc định, bạn không cần phải viết chrome.exe.


start "FOO_DIR\FOO.exe"

Điều này không hoạt động, bởi vì startsẽ sử dụng đối số đầu tiên của nó làm tiêu đề cửa sổ nếu nó được trích dẫn. Vì vậy, điều này sẽ mở một CMD mới với "FOO_DIR\FOO.exe"tiêu đề như nó.

Để phá vỡ điều này, bạn chỉ cần thêm một đối số tiêu đề trống trước lệnh của bạn:

start "" "FOO_DIR\FOO.exe"

Hơn nữa, AFAIR, tiêu đề là bắt buộc khi khởi chạy các tệp thực thi với các công tắc dòng lệnh
tóm tắt

1
Nó không startmong đợi một tiêu đề như là đối số đầu tiên của nó (nếu không start chromesẽ không hoạt động), đó là nếu trích dẫn đối số đầu tiên của nó, nó hy vọng nó sẽ là một tiêu đề.
jamesdlin

@jamesdlin ah, tài liệu về điều này hơi mơ hồ, cảm ơn. Tôi đã chỉnh sửa câu trả lời tương ứng
crater2150

5

Hãy thử thêm "title"hoặc ít nhất là ""sau startnhư thế này:

start "title" "FOO_DIR\FOO.exe"

hoặc là

start "title" /B  "FOO_DIR\FOO.exe"

Nguyên nhân cốt lõi của vấn đề là đối số đầu tiên trong dấu ngoặc kép "" được hiểu là một titletham số cho cmdcửa sổ mới .

Ngoài ra nó giúp xem tham chiếu lệnh (liên kết)


Cảm ơn, điều đó đã làm rõ sự khác biệt. Và với cái đầu tiên tôi nghĩ rằng "Các tệp không thể thực thi có thể được gọi thông qua liên kết tệp của chúng chỉ bằng cách nhập tên của tệp dưới dạng một lệnh." là lý do tại sao chỉ cần tên là đủ ... (mặc dù không chắc chắn)
Ông Smith

Nếu bạn đang nói về ví dụ của bạn với start chrometôi tin rằng việc gọi chrome hoạt động, bởi vì nó có một mục trong sổ đăng ký ở đâu đó tại đây: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths Nếu bạn tìm kiếm chrome.exe, rất có thể bạn sẽ tìm mục chứa đường dẫn đầy đủ để thực thi.
Art Gertner
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.