2009-08-27 30 views
22

Tôi cần khởi chạy các chương trình trong hệ thống cục bộ của mình bằng VBScript. Nhưng tôi gặp rắc rối với cú pháp. Đây là những gì tôi đang sử dụng ngay bây giờ -Khởi chạy các chương trình có đường dẫn chứa không gian

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("iexplore") 
Set objShell = Nothing 

Đoạn mã trên đã khởi chạy thành công IE. Tôi muốn khởi chạy các trình duyệt khác. Nhưng, nếu tôi sử dụng -

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("c:\Program Files\Mozilla Firefox\firefox.exe") 
Set objShell = Nothing 

nó đang phát hiện lỗi khi không tìm thấy tệp hoặc đường dẫn. Tôi không chắc làm thế nào các tham số bên trong các chức năng Run() được thực hiện - tôi nên cung cấp cho các đường dẫn đến một EXE hoặc tôi nên cung cấp cho một số lệnh DOS ?!

Trả lời

43

Hãy thử: -

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("""c:\Program Files\Mozilla Firefox\firefox.exe""") 
Set objShell = Nothing 

Lưu ý thêm "" s trong chuỗi. Vì đường dẫn tới exe chứa các khoảng trắng cần phải được chứa trong dấu ngoặc kép. (Trong trường hợp này chỉ cần sử dụng "firefox.exe" sẽ hoạt động).

Cũng lưu ý rằng nhiều chương trình tồn tại trong thư mục c: \ Program Files (x86) trên các phiên bản 64 bit của Windows.

+1

Xin chào, cảm ơn! Tôi đã nhầm lẫn với các dấu ngoặc kép: D Nhưng một lưu ý - sử dụng đơn giản là "firefox.exe" không hoạt động. –

+4

bạn có thể sử dụng 'objShell.Run (" ""% ProgramFiles% \ Mozilla Firefox \ firefox.exe "" ")' để làm tròn bài toán 64 bit –

+2

Không thực sự là Jack. Firefox vẫn có thể được cài đặt dưới% ProgramFiles (x86)%. – mgr326639

-10

Sao chép thư mục, firefox.exe nằm trong và chỉ trong c: \ only. Kịch bản là có một thời gian khó leo cây tập tin của bạn. Tôi thấy rằng khi tôi đặt tệp * .exe trong c: \ nó đã loại bỏ thông báo lỗi "không tìm thấy tệp."

+4

Không phải là một biện pháp rất hữu ích để đưa mọi thứ vào thư mục gốc của FS. –

+3

Giải pháp đó khóc cho toàn bộ các vấn đề khác. Hãy tưởng tượng bạn làm điều này với hai chương trình, cả hai đều chứa một tập tin gọi là 'common.dll'. –

3

Bạn van sử dụng Exec

Dim objShell 
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Exec("c:\Program Files\Mozilla Firefox\firefox.exe") 
Set objShell = Nothing 
+1

Câu trả lời này giống với câu trả lời ở trên, ngoại trừ nó hơi sai vì nó không bao gồm dấu ngoặc kép xung quanh tên chương trình. –

+1

Câu trả lời này gần như giống với câu trả lời ở trên, ngoại trừ nó giúp loại bỏ sự cần thiết của một số dấu ngoặc kép và nó hoạt động. –

+0

Mặc dù, Exec không được phép khởi động chương trình từ C: \ Users \ user \ Appdata \ Local, trong khi Run có thể khởi động ứng dụng từ đó. (TeamSpeak 3 cài đặt ở đó, đối với tôi ít nhất là nó đã làm) –

1
Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("firefox") 
Set objShell = Nothing 

Vui lòng thử này

+0

Nó không được gõ như tôi dự định. chỉ cần điều chỉnh sai lầm. có câu trả lời tương tự trên trang với thụt lề thích hợp. –

1

tìm một file .exe cho ứng dụng mà bạn muốn chạy dụ iexplore.exe và firefox.exe và loại bỏ .exe và sử dụng nó trong objShell.Run ("firefox")

Tôi hy vọng điều này sẽ hữu ích.

3

Nó làm việc với

Set WSHELL = CreateObject("Wscript.Shell") 
WSHELL.Exec("Application_Path") 

Nhưng những gì cần được các tham số trong trường hợp chúng tôi muốn nhập tên ứng dụng duy nhất

ví dụ như trong trường hợp của Internet Explorer

WSHELL.Run("iexplore") 
1
set shell=CreateObject("Shell.Application") 
' shell.ShellExecute "application", "arguments", "path", "verb", window 
shell.ShellExecute "slipery.bat",,"C:\Users\anthony\Desktop\dvx", "runas", 1 
set shell=nothing 
0

Những gì bạn đang cố gắng để đạt được là đơn giản, và cách bạn đang đi về nó không phải là. Hãy thử điều này (Hoạt động tốt cho tôi) và lưu các tập tin như là một lô từ trình soạn thảo văn bản của bạn. Tin tôi đi, dễ dàng hơn.

start firefox.exe 
Các vấn đề liên quan