2015-10-19 11 views
5

Tôi đang cố viết một tệp lô đơn giản để xây dựng dự án gulp và dự án maven.Kịch bản lệnh ngừng hoạt động sau khi quá trình `gulp` hoàn tất, không tiếp tục thực thi phần còn lại của tập lệnh

Các tập tin hiện sau:

cd C:\my\file\path 
cmd /k gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
cmd /k mvn clean install -Dmaven.test.skip=true 

Bất cứ khi nào tôi chạy kịch bản này, dòng lệnh dừng sau khi dòng 2 và trước dòng 3. Tôi kết thúc nhìn vào dòng này trong cmd với một con trỏ nhấp nháy:

C: \ \ tập tin \ con đường của tôi>

Nếu tôi chạy các tập tin mà không có sự cmd /k (như sau) sau đó dấu nhắc chỉ đơn giản là c mất sau dòng 2 và trước dòng 3.

cd C:\my\file\path 
gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
mvn clean install -Dmaven.test.skip=true 

Làm thế nào tôi có thể sửa đổi các tập lệnh batch để nó sẽ tiếp tục và thực thi các lệnh trên dòng 3 và 4 và sau đó vẫn mở với dòng sau và con trỏ nhấp nháy?

C: \ \ tập tin \ con đường của tôi \ hai \ dự án-pom-mẹ>

Tôi đang hoạt động trên Windows 7 64-bit

Trả lời

7

Nhiệm vụ này là đủ cụ thể để sử dụng tính năng này:

cd /d "C:\my\file\path" 
cmd /c gulp maven-deploy-local 
cd /d "C:\my\file\path\two\project-pom-parent" 
cmd /k mvn clean install -Dmaven.test.skip=true 

Thực chất làđầu tiêncó thể được thay đổi thành cmd /c để nó thực hiện lệnh và tiếp tục lệnh cuối cùng, để lại lời nhắc mở.

+0

Giải pháp này dễ hiểu, dễ sử dụng và bảo trì hơn. Cảm ơn! –

+0

Có điều đó có ý nghĩa Foxidrive. CMD/C đầu tiên mở một môi trường khác để nó trở về môi trường ban đầu sau khi nó được thực hiện xong. Tôi không thể nhớ lý do tại sao chúng tôi đã đưa ra các logic tôi sử dụng mà tôi nhớ từ một câu hỏi DosTips. – Squashman

+0

@Squashman Bạn nói đúng - và nếu người dùng cần sử dụng các biến môi trường được đặt trong lệnh gulp thì 'cmd/c' sẽ không chuyển chúng trở lại tập lệnh. – foxidrive

3
@ECHO OFF 
IF NOT "%1"=="1" CMD /K ""%~f0" 1" 
CD /d C:\my\file\path 
CALL gulp maven-deploy-local 
CD /d C:\my\file\path\two\project-pom-parent 
CALL mvn clean install -Dmaven.test.skip=true 
+0

Giải pháp này hoạt động, cảm ơn. Tôi sẽ upvote và chấp nhận câu trả lời nếu bạn bao gồm một lời giải thích về những gì các dòng đang làm để tôi có thể sử dụng các công cụ đại diện ở đây trong tương lai :). –

+0

Các câu lệnh CALL là cần thiết để giữ cho tệp bó khỏi đóng sau khi nó thực hiện từng chương trình. Câu lệnh IF NOT chỉ là một thủ thuật để thực thi tệp lô ban đầu lần thứ hai và giữ nó mở bằng cách sử dụng CMD/K. Vì vậy, trong lý thuyết nó đang thực hiện tập tin thực thi của bạn hai lần. Lần đầu tiên nó thực hiện IF NOT. Lần thứ hai, IF NOT là FALSE bởi vì tôi đã chuyển một đối số cho tệp lô để nó thực thi 4 dòng mã cuối cùng thay thế. – Squashman

Các vấn đề liên quan