Dosコマンド実行 Win98

解決


Mone  2003-02-13 21:08:44  No: 106045  IP: [192.*.*.*]

VB6.0で、Shellを使用し、Dosコマンドを入れて行っているのですが、
Win2000だとうまくいくのにWin98だとダメです。
扱っているファイルは、バイナリです。

Win2000
Shell("cmd /c copy /b C:\***.000 + C:\***.001 + C:\***.002 C:\***.exe", vbHide)

このようにやるとうまく実行されるのですが、

Win98
Shell("command.com /c copy /b C:\***.000 + C:\***.001 + C:\***.002 C:\***.exe", vbHide)

で行うとエラーになってしまいます。
ただし、そのコマンドをコピーしてバッチを手動で作成するととうまく動いてEXEが作成されます。
コマンドは、間違ってないとおもうのですが・・・。
Win98でうまく実行できる方法を教えてください。
お願いします。

編集 削除
oku  URL  2003-02-14 01:48:04  No: 106046  IP: [192.*.*.*]

エラーの内容がわからないので、
見当違いかもしれませんが、
ファイル名に空白があるとか?
Dosでは  空白が現れるとパラメータだと思っちゃうんで、
空白があるファイル名の場合は、ダブルクォーテーションで囲んでください。
たとえば、"C:\TEST DAYO.001" みたいに!

編集 削除
Mone  2003-02-14 10:36:32  No: 106047  IP: [192.*.*.*]

ご解答ありがとうございます。
すみません、エラーと言うよりは実行されませんが正しいです。
ファイル名に空白は、ありません。
Win98で、テキストファイルであれば実行できました。
しかし、バイナリファイルになったとたん実行できません。
/bとバイナリファイルに変えただけなのですが・・・。

編集 削除
oku  URL  2003-02-16 23:55:55  No: 106048  IP: [192.*.*.*]

うーん  やっぱりパラメータの途中に
空白があるせいだと思います。

Win98SEで試したんですが、出来ましたよ。
ちなみにソースは、以下のようにやりました。

    Dim lngRet      As Long
    Dim vbDblQ      As String
    Dim strFile1    As String
    Dim strFile2    As String
    Dim strFile3    As String
    
    vbDblQ = """"
    strFile1 = vbDblQ & "C:\LOGO.000" & vbDblQ
    strFile2 = vbDblQ & "C:\LOGO.001" & vbDblQ
    strFile3 = vbDblQ & "C:\LOGO.BMP" & vbDblQ
    
    lngRet = Shell("command.com /c COPY /B " & strFile1 & "+" & strFile2 & " " & strFile3, vbHide)

一応ファイル名にダブルクォーテーションを
付けないでも上手く出来ました。
    strFile1 = "C:\LOGO.000"
    strFile2 = "C:\LOGO.001"
    strFile3 = "C:\LOGO.BMP"

もし  それでもエラー原因がわからない場合は、
VBからバッチファイルを作成してそれを実行してみると
多分デバッグしやすいと思います。
MSGBOXでも良いですけどね。
こんな感じに
Msgbox "COPY /B " & strFile1 & "+" & strFile2 & " " & strFile3

編集 削除
Mone  2003-02-17 09:58:20  No: 106049  IP: [192.*.*.*]

ありがとうございます。
とても参考になりました。

編集 削除