2012-01-03 34 views
23

Tôi đang cố gắng chuyển sang thư mục bằng cmd rồi thực thi tệp lôcmd.exe/k chuyển đổi

ví dụ:

cmd /k cd "C:\myfolder" 
startbatch.bat 

Tôi cũng đã cố gắng (nhưng không thành công)

cmd cd /k cd "C:\myfolder" | startbatch.bat 

Mặc dù dòng đầu tiên (cmd/k) có vẻ chạy ok, nhưng lệnh thứ hai là không bao giờ chạy. Tôi đang sử dụng Vista là hệ điều hành

+0

Có thể câu hỏi ở trên có thể liên quan hơn đến diễn đàn Super Exchange Stack Exchange không? –

+1

Stack Overflow là trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem [Tôi có thể hỏi những chủ đề gì ở đây] (http://stackoverflow.com/help/on-topic) trong Trung tâm trợ giúp. Có lẽ [Super User] (http://superuser.com/) sẽ là một nơi tốt hơn để hỏi. – jww

Trả lời

42

cú pháp đúng là:

cmd /k "cd c:\myfolder & startbatch.bat" 
+0

Cảm ơn ssg !!!! – Mike

+0

vẫn hoạt động trong win 7 – stackuser83

+0

Điều gì sẽ xảy ra nếu thư mục được gọi là "c: \ my folder \" (chú ý không gian) tôi phải làm gì sau đó? –

2
cmd cd /k "cd C:\myfolder; startbatch.bat" 

hay, tại sao bạn không chạy cmd /k c:\myfolder\startbatch.bat, và đừng cd c:\myfolder trong file .bat?

+2

Tôi không nghĩ rằng ';' có thể được sử dụng làm dấu phân cách lệnh trong kịch bản lệnh Windows. Thông thường '&' được sử dụng thay thế. –

6

ssg đã đăng câu trả lời đúng. Tôi sẽ chỉ thêm/d chuyển sang lệnh cd (ví dụ: cd /d drive:\directory). Điều này đảm bảo lệnh hoạt động trong trường hợp thư mục hiện tại nằm trên ổ đĩa khác với thư mục bạn muốn cd.

0

Bạn có thể sử dụng & hoặc && làm dấu phân cách lệnh trong Windows.

Ví dụ:

cmd cd /K "cd C:\myfolder && startbatch.bat" 
0

Tôi cho đây là một câu trả lời vì tôi thấy câu hỏi này trong một chú thích và không thể bình luận được nêu ra.

cmd /k "cd c:\myfolder & startbatch.bat"

công trình, và nếu bạn có không gian:

cmd /k "cd "c:\myfolder" & startbatch.bat"

Theo tôi được biết, lệnh sẽ được chuyển cho cmd như "cd "c:\myfolder" & startbatch.bat", sau đó được chia nhỏ thành cd "c:\myfolder"&startbatch.bat tại mà điểm còn lại " " sẽ chăm sóc đường dẫn dưới dạng chuỗi.

Bạn cũng có thể sử dụng &&, ||| tùy thuộc vào những gì bạn muốn đạt được.

+0

Đối với những người quan tâm khám phá sự khác biệt giữa '&', '&&', '|' và '||': http://www.chebucto.ns.ca/~ak621/DOS/DOS-Char.html – Marc

0

Tôi không thể nhìn thấy một câu trả lời việc giải quyết này, vì vậy nếu có ai cần phải truy cập vào một thư mục đó có không gian trong tên của nó, bạn có thể thêm dấu ngoặc kép bổ sung, ví dụ

cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe" 

Từ PowerShell bạn cần phải thoát khỏi dấu ngoặc kép sử dụng backquote '

cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe" 

Chú ý các dấu ngoặc kép thoát

`" 

bên trong chuỗi đường dẫn:

"`"C:\my path\`"" 

này sẽ thực hiện lệnh thích hợp trong cmd, ví dụ: con đường bao quanh với dấu ngoặc kép mà nên làm việc.

Lệnh mẫu ở trên sẽ khởi tạo lời nhắc lệnh của nhà phát triển MSVC và quay lại PowerShell, kế thừa môi trường và cấp quyền truy cập vào các công cụ MSVC.

+0

chưa bao giờ nghe nói về thoát với 'trong lô. – Stephan

+0

Đúng, tôi đã cập nhật câu trả lời với ví dụ chính xác cho 'cmd'. Ví dụ khác là gọi 'cmd' từ' powershell'. Tôi hy vọng câu trả lời là rõ ràng hơn bây giờ. – Bhyd