Dosコマンド実行 Win98

解決


Mone  2003-02-14 06:08:44  No: 106045

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 10:48:04  No: 106046

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


Mone  2003-02-14 19:36:32  No: 106047

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


oku  URL  2003-02-17 08:55:55  No: 106048

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

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 18:58:20  No: 106049

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加