● DOSプログラムを実行する ●

DOSって結構便利なんだよね。

以下の関数の引数にコマンドライン文字列を送ればよろしい。

'---------------------------------------------------------------------------
' 関数名 : SendComLineToDOS
' 機能 : DOSプログラムを実行する
' 引数 : (in) ComLine … コマンドライン
' 戻り値 : プロセスID   エラー:0
'---------------------------------------------------------------------------
Public Function SendComLineToDOS(ByVal ComLine As String) As Long

    SendComLineToDOS = Shell(Environ("COMSPEC") & " /C " & ComLine)

End Function

ちなみにコマンドライン文字列には制限があったりする。それは、

  Windows 95 は128文字、 Windows NT では 259 文字、 Windows 98 不明

となっている。これは自分で手入力して調べたんだけど、正確性は保証できない。使用の際は、OSの種類別に長さ判定をする必要があるかもしれないんで注意。

Environ("COMSPEC") により、Windows95 では Command.com を WindowsNT では CMD.exe を取得する。これに関しては、OSによる場合分けの必要はのし。ちなみに、WindowsNTにも、C:\winnt\system32 に command.com があるけど、聞くところによると、Windows95 & Windows98 & DOS互換のためにあるそうな。

最後に簡単な使用例を挙げておく。

Private Sub Command1_Click()
    'ファイル内容を比較する
    Call SendComLineToDOS("fc /n C:\ilgg.txt C:\ilgg.txt > C:\Test.txt")
End Sub

戻る