2017-05-24 7 views
1

フラッシュドライブ上のファイルのドライブ文字とパスを取得しようとしていますが、フラッシュドライブのドライブ文字は(f、g、k)どのUSBポートに接続されているかによって異なります。ドライブレターに関係なく、.batスクリプトを起動するようにVBScriptを修正するにはどうすればよいですか?.vbsでバットファイルを実行し、フラッシュドライブ上のパスを取得する方法

Set shell = WScript.CreateObject("WScript.Shell") 
shell.Run("%drive%:\Folder\run.bat"), 0 , True 
+0

が重複する可能性のようなものを使用することによって大幅にこれを簡素化することができ[/ボリュームを参照ラベルによるドライブ](https://stackoverflow.com/questions/9065280/reference-a-volume-drive-by-label) – AWinkle

+1

あなたはバッチ構文とvbs構文を混同していますが、あなたが何をしているのかはわかりません。それはバッチ/ VBの実行とあなたはそれが自分の場所を知りたいですか?または、HDからバッチ/ vbsを実行して、pendriveのドライブ文字を探していますか? @ AWinkleのリンクは、探すラベルを定義する方法を示しています。 – LotPings

答えて

0

あなたはできたすべてのドライブをループし\folder\run.batが存在するかどうかを確認してください。

また、VBScript Runメソッドの構文についてはsee this pageです。

Set shell = WSH.CreateObject("WScript.Shell") 
Set fso = WSH.CreateObject("Scripting.FileSystemObject") 
Set drives = fso.Drives 

For Each drive in drives 
    batfile = drive.DriveLetter & ":\folder\run.bat" 
    if fso.FileExists(batfile) Then Exit For 
Next 

If not fso.FileExists(batfile) Then 
    WSH.Echo("bat script not found.") 
    WSH.Quit(1) 
End If 

WSH.Echo("found it: " & batfile) 
shell.Run batfile, 0, True 

またのみremovable drivesに検索を制限すると考えられているかもしれないが、フラッシュドライブは、1のドライブタイプは保証されません割り当てられています。私は高速なUSB 3.0フラッシュドライブを持っています。これは、内蔵ハードディスクドライブと同じ2のドライブタイプが与えられています。


のVBScriptは.BATスクリプトと同じディレクトリまたは同じドライブであることを行っている場合は、あなたがの

Dir = fso.GetParentFolderName(WSH.ScriptFullName) 
Drive = fso.GetFolder(Dir).Drive.DriveLetter 
関連する問題