バッチの引数について

解決


ごん  2007-11-07 21:07:54  No: 99651  IP: 192.*.*.*

Function bat_test()
On Error GoTo a_err
    Dim Ret
    Dim b_test As String
    Dim p_a
    Dim p_b
      
    b_test = "C:\Documents and Settings\abc\デスクトップ\b_test.bat"
    p_a = "123 "
    p_b = "4 5"
   
    Ret = Shell("cmd.exe /c """ & b_test & """" & " " & p_a & """ & p_b & """, vbNormalFocus)
Exit Function
a_err:
    MsgBox Err.Description
End Function

<b_test.bat>
@echo off
echo %1
echo %2
echo %3

pause

;;;;;;;;;;
結果は、Dosプロンプトが一瞬でて終わります。
2番目の引数に空白が入っていますが、"  で括っていますが、どうもうまくいきません。お分かりの方よろしくお願いいたします。

編集 削除
大吉末吉  2007-11-07 21:21:28  No: 99652  IP: 192.*.*.*

「”」の個数が合ってません(足らない)。

これでは、

「cmd.exe /c "C:\Documents and Settings\abc\デスクトップ\b_test.bat" 123 " & p_b & "」
こういうコマンドを実行しようとしてしまいます。

編集 削除
大吉末吉  2007-11-07 21:29:14  No: 99653  IP: 192.*.*.*

>     Ret = Shell("cmd.exe /c """"" & b_test & """" & " " & p_a & """" & p_b & """""", vbNormalFocus)

うーん。こうかな・・・

「cmd.exe /c ""C:\Documents and Settings\abc\デスクトップ\b_test.bat" 123 "4 5""」

こういうコマンドが実行されるはず・・・

編集 削除
ごん  2007-11-07 21:40:47  No: 99654  IP: 192.*.*.*

Ret = Shell("cmd.exe /c """"" & b_test & """" & " " & p_a & " " & """" & p_b & """""", vbNormalFocus)
で解決しました。

大吉末吉さん、感謝です!!

編集 削除