2011-07-21 29 views
29

Tôi hiện đang viết một tệp lô thực thi tệp cài đặt. Trước khi chạy tệp cài đặt, tôi kiểm tra xem thư mục có tồn tại hay không để tránh cài đặt lại ứng dụng.Nếu không tồn tại - Lệnh CMD - Không hoạt động

Tôi làm điều này bằng cách sử dụng tuyên bố If Not Exists filename. Nếu tập tin được cài đặt không tồn tại, sau đó tôi thực thi tập tin cài đặt.

Vì một lý do nào đó, khi tôi kiểm tra nó với ứng dụng đã được cài đặt, ứng dụng vẫn đang cố cài đặt lại ứng dụng trên đó.

Dưới đây là một đoạn mã của tôi:

cd "C:\Documents and Settings\John\Start Menu\Programs\" 
pause 
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe 
pause 
) 

đâu SoftwareFolder là một thư mục con của "C:\Documents and Settings\John\Start Menu\Programs\". tôi đang kiểm tra để xem nếu nó tồn tại trong thư mục Programs tôi.

Tôi biết không có gì sai với lệnh start của tôi. Tôi có cảm giác có gì đó sai khi bắt đầu lệnh CD hoặc các tham số của nó.

Cảm ơn rất nhiều bạn!

Trả lời

39

Sử dụng đường dẫn ĐẦY ĐỦ cho thư mục trong mã Không tồn tại của bạn. Sau đó, bạn thậm chí sẽ không còn phải dùng CD nữa:

If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\" 
+0

tôi đã cố gắng đó, nhưng nó quá không hoạt động. – Johnrad

+1

Tôi đã thử điều đó và nó không hoạt động.Nhưng khi tôi đã làm Nếu không tồn tại C: \ "Tài liệu và cài đặt" \ John \ "Start Menu" \ Programs \ "SoftWare Folder" \ – Johnrad

+0

Nó hoạt động! Cảm ơn :) – Johnrad

3

Tôi nhận thấy một số vấn đề có thể hữu ích đối với người mới bắt đầu hoặc người dùng ít kinh nghiệm cần biết. Đầu tiên ...

CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\" 

hai điều một là một/D sau khi đĩa CD có thể chứng minh là hữu ích trong việc bảo đảm các thư mục được thay đổi nhưng nó không thực sự cần thiết, thứ hai, nếu bạn đang đi để chuyển thông tin này từ người dùng cho người dùng mà bạn phải thêm, thay vì tên của bạn, mã% username%, điều này làm cho mã có thể sử dụng trên bất kỳ máy tính nào, miễn là chúng có tệp setup.exe trong cùng một vị trí như bạn thực hiện trên máy tính của mình. tất nhiên làm cho chắc chắn rằng đó là khó khăn hơn. cũng ...

start \\filer\repo\lab\"software"\"myapp"\setup.exe 

mã bắt đầu ở đây, có thể được thiết lập như thế, nhưng cú pháp chính xác là

start "\\filter\repo\lab\software\myapp\" setup.exe 

này sẽ chạy: setup.exe, tọa lạc tại: \ lọc \ repo \ lab ... vv \

0

Như trong câu trả lời của Escobar Ceaser, tôi khuyên bạn nên sử dụng dấu ngoặc kép làm cho toàn bộ đường dẫn. Đó là cách phổ biến để bọc toàn bộ đường dẫn trong "", không chỉ các tên thư mục riêng biệt trong đường dẫn.

Tôi gặp sự cố tương tự nhưng nó không hoạt động đối với tôi. Nhưng nó không có tùy chọn để sử dụng "" trong đường dẫn cho các tên thư mục riêng biệt bởi vì đường dẫn chứa các biến môi trường, mà chính chúng bao gồm nhiều phân cấp thư mục. Kết luận là tôi bỏ qua không gian giữa đóng "và (

Phiên bản đúng, với không gian trước khung, sẽ

If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe" 
pause 
) 
Các vấn đề liên quan