連携 コマンドプロンプトCMDexeコマンド送信

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Sub CMDexeSend()
'*************************************
'コマンドプロンプトCMDexeコマンド送信
'*************************************

Dim strCommand As String
Dim strPath As String

strCommand = "VER" 'Windowsのバージョン取得コマンド

'基本

'終了後コマンドプロンプトCMDexeを閉じる
'Call Shell("Command.com /c " & strCommand) 'Win9X
'Call Shell("CMD.exe /c " & strCommand)     'WinNT
'Call Shell("CMD /c " & strCommand)         'WinNT

'終了もコマンドプロンプトCMDexeを閉じない
'Call Shell("Command.com /k " & strCommand) 'Win9X
'Call Shell("CMD.exe /k " & strCommand)     'WinNT
'Call Shell("CMD /k " & strCommand)         'WinNT

'【Environ関数】
'   オペレーティングシステムの環境変数に割り当てられた文字列型を返します
'【環境変数】
'ComSpecから取得

'Call Shell(Environ$("ComSpec") & " /c " & strCommand) 'Win9X & WinNT
'Call Shell(Environ$("ComSpec") & " /k " & strCommand) 'Win9X & WinNT

'引数にてウィンドを制御
'Call Shell(Environ$("ComSpec") & " /k " & strCommand, vbNormalFocus)

strCommand = "dir"
strPath = "c:\temp"
'Call Shell(Environ$("ComSpec") & " /k " & strCommand & " " & strPath, vbNormalFocus)
'※上記のように" "半角空白はコマンドプロンプトにとって大きな意味を持ちます
'例えば
strPath = "c:\Documents and Settings\XXX"
'の場合
'Call Shell(Environ$("ComSpec") & " /k " & strCommand & " " & strPath, vbNormalFocus)
'ではエラーになります(CMD.exeは実行されます)

strPath = Chr$(34) & "c:\Documents and Settings\XXX" & Chr$(34)
'又は
strPath = """c:\Documents and Settings\XXX"""
'又は
strPath = Chr$(34) & strPath & Chr$(34)
'で回避できます

Call Shell(Environ$("ComSpec") & " /k " & strCommand & " " & strPath, vbNormalFocus)

End Sub

 

 

 

2000年01月01日|[VBサンプルコード]:[連携]