- ベストアンサー
HTMLからのBATファイル実行
- HTMLからのBATファイル実行について質問があります。指定したパスにファイルが存在するにもかかわらず、ファイルが見つからないエラーが表示され、COPYコマンドが実行されません。
- HTMLからのBATファイル実行に関する問題が発生しています。リンクからではなく直接BATファイルを実行すると正常に動作しますが、HTMLファイルからの実行ではファイルが見つからないというエラーが表示されます。
- HTMLからのBATファイル実行に問題が発生しています。指定したパスにファイルが存在するにもかかわらず、ファイルが見つからないエラーが表示され、COPYコマンドが実行されません。解決方法をご教示いただければ幸いです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
★ご指摘有り難うございます。 ・『Install.vbs』にもドライブをつける必要があるようですね。難しい!どうしよう? 『HTML』ソースに JavaScript か、VBScript でドライブ取得を行って、ユーザにボタンを 押してもらったらば JavaScript などで分岐して最初の2つのバッチファイルでも実行する 仕組みはどうでしょう。このとき、バッチファイルに引数を取り、その引数にドライブ名を 指定するようにすれば良いのでは。→引数には A:、B:、C:、D:、E: とコロンをつけておく。 ◎BATファイルの内容(Windows Vista用) COPY %1\ABC.GIF "C:\TEST" COPY %1\123.EXE "%USERPROFILE%\Desktop" ◎BATファイルの内容(Windows XP用) COPY %1\ABC.GIF "C:\TEST" COPY %1\123.EXE "%USERPROFILE%\デスクトップ" または、引数に2個指定するタイプで ◎BATファイルの内容(Windows XP/Vista両用) COPY %1\ABC.GIF "C:\TEST" COPY %1\123.EXE "%USERPROFILE%\%2" この場合は 『sample.bat E: デスクトップ』が Windows XP用の引数です。 『sample.bat E: Desktop』が Windows Vista用の引数です。 『HTML』ソースに JavaScript か、VBScript でCDドライブの取得する方法を探ってみて下さい。 VBScript スクリプトならば前回の回答例を参考に『HTML』ソースに埋めこれるかもしれません。 私は『HTML』ソースに JavaScript を組み込むことは知っていますが、VBScript の方法は 忘れてしまいました。→検索すれば見つかるかも。 以上。参考に!
その他の回答 (3)
- Oh-Orange
- ベストアンサー率63% (854/1345)
'Install.vbs Set objFS = CreateObject("Scripting.FileSystemObject") Set objShell = WScript.CreateObject("WScript.Shell") If Install(GetCDROM()) Then MsgBox "インストールを終了しました。",vbOKOnly,"確認" Else MsgBox "スクリプトの OS 指定が間違っています。",vbOKOnly,"エラー" End If 'インストール処理 Function Install(strDrive) If WScript.Arguments.Count <> 1 Then Install = 0 ElseIf WScript.Arguments(0) = "XP" Then Install = 1 strPath = objShell.ExpandEnvironmentStrings("%USERPROFILE%\デスクトップ\") ElseIf WScript.Arguments(0) = "Vista" Then Install = 1 strPath = objShell.ExpandEnvironmentStrings("%USERPROFILE%\Desktop\") Else Install = 0 End If If Install Then 'コピー処理 objFS.CopyFile strDrive & "ABC.GIF", "C:\TEST\" objFS.CopyFile strDrive & "123.EXE", strPath End If End Function 'CD-ROM ドライブの検査 Function GetCDROM() For Each objDrive In objFS.Drives If objDrive.DriveType = 4 Then GetCDROM = objDrive.DriveLetter & ":\" Exit Function End If Next GetCDROM = "\" End Function
補足
Oh-Orange様 早速のご回答、また丁寧かつ親切にご対応いただき、本当に感謝しております。 いただいたソースを元に試してみたのですが、BATを起動しても反応がありませんでした。 いろいろと試してみたところ、ひとつ気がついたことがあります。 いちばん最初の話に戻るのですが、BATにてCD-ROMのドライブレターをSETしなければいけないのではないかと。 SETした後、%DRIVE%Install.vbsで指定しなければいけないのかなと考えました。 そこで、BATを経由せず、HTMLから直接Install.vbsにリンクを貼ってみようかと考えました。 分岐の部分でBATを使わずにInstall.vbsをXP用とVista用の2つ作成して'コピー処理を加工してチャレンジしてみます。 もちろん、Oh-Orange様の方で他にお知恵がございましたら、是非とも拝借したいと思います。 宜しくお願いいたします。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★『VBScript』ならば CD-ROM ドライブが調べられます。 ・OS が Windows XP、Window Vista 専用ならば『VBScript』が利用できます。 そこで、バッチファイルは下のようになります。引数の Vista、XP 意外だとエラーになります。 ◎BATファイルの内容(Windows Vista用) CSCRIPT.EXE Install.vbs //B Vista ◎BATファイルの内容(Windows XP用) CSCRIPT.EXE Install.vbs //B XP 最後に: ・次の回答で『VBScript』のソースを載せます。 すてべの内容をコピーしてメモ帳などに貼り付けて下さい。 ファイル名は『Install.vbs』です。→別名のとき、バッチファイル内の変更あり。 ・スクリプト内で CD-ROM のドライブを検査して取得しています。 ファイルのコピーもスクリプト内のコピー命令で行っています。 ・『コピー処理』の『ABC.GIF』、『123.EXE』、『C:\TEST』だけ編集して下さい。 コピー命令の書式は『objFS.CopyFile コピー元, コピー先』となります。 文字列は必ず(”)文字で囲って下さい。バッチファイルと違い省略できません。 複数の文字列を結合するには『&』文字で繋げます。ソースを参考に編集を。 ・以上です。→正常に実行できるかテストして下さい。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★BATファイルの先頭行に『SET DRIVE=E:\』を追加して下さい。 ・仮に CD ドライブを E: とします。→違う場合は書き換えて下さい。 ・下のサンプルをどうぞ。 ◎BATファイルの内容(Windows Vista用) SET DRIVE=E:\ COPY %DRIVE%ABC.GIF "C:\TEST" COPY %DRIVE%123.EXE "%USERPROFILE%\Desktop" ◎BATファイルの内容(Windows XP用) SET DRIVE=E:\ COPY %DRIVE%ABC.GIF "C:\TEST" COPY %DRIVE%123.EXE "%USERPROFILE%\デスクトップ" 最後に: ・ブラウザで BAT ファイルを実行すると C ドライブの %USERPROFILE% フォルダで バッチファイルを起動することになります。するとそのフォルダに『ABC.GIF』や 『123.EXE』は存在しないため『ファイルが見つからない』エラーになるのです。 ・そこで BAT ファイルの先頭に環境変数『DRIVE』でドライブ・パスを設定して 『COPY』コマンドで参照しています。もちろん、COPY コマンドの先頭に『E:\』という ドライブ名+パスを追加しても良いでしょう。 なお、ドライブ名が固定の場合は上手くいきますが、インストール用の BAT ファイル のような気がします。この場合はドライブ名を入力してもらう仕組みが必要になります。 個人での利用でしょうか?それともインストール用の BAT ファイルでしょうか? ・よくは分かりませんが、上記の方法でコピーできるので解決すると思います。 ・以上。おわり。
補足
Oh-Orange様 回答ありがとうございます。 なるほど、ドライブレターをSETする必要があるわけですね。 最後にご指摘いただきましたとおり、この内容はインストールCDに使いたいと考えています。 そこで、再度、お知恵をお貸しください。 CD-ROMが挿入されているドライブのレターを、環境変数などを使ってSETすることは可能でしょうか。 もし無理な場合、ユーザーにレターを入力させるといった方法はあるのでしょうか。 なにとぞ宜しくお願いします。
お礼
Oh-Orange様 またまた、ありがとうございました。 ご提示いただきました案を含めて、いろいろと工夫してみたいと思います。 本当にご親切にありがとうございました。 今後とも宜しくお願いいたします。