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でうまく実行できる方法を教えてください。
お願いします。
エラーの内容がわからないので、
見当違いかもしれませんが、
ファイル名に空白があるとか?
Dosでは 空白が現れるとパラメータだと思っちゃうんで、
空白があるファイル名の場合は、ダブルクォーテーションで囲んでください。
たとえば、"C:\TEST DAYO.001" みたいに!
ご解答ありがとうございます。
すみません、エラーと言うよりは実行されませんが正しいです。
ファイル名に空白は、ありません。
Win98で、テキストファイルであれば実行できました。
しかし、バイナリファイルになったとたん実行できません。
/bとバイナリファイルに変えただけなのですが・・・。
うーん やっぱりパラメータの途中に
空白があるせいだと思います。
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
ありがとうございます。
とても参考になりました。