HTMLからのBATファイル実行

このQ&Aのポイント
  • HTMLからのBATファイル実行について質問があります。指定したパスにファイルが存在するにもかかわらず、ファイルが見つからないエラーが表示され、COPYコマンドが実行されません。
  • HTMLからのBATファイル実行に関する問題が発生しています。リンクからではなく直接BATファイルを実行すると正常に動作しますが、HTMLファイルからの実行ではファイルが見つからないというエラーが表示されます。
  • HTMLからのBATファイル実行に問題が発生しています。指定したパスにファイルが存在するにもかかわらず、ファイルが見つからないエラーが表示され、COPYコマンドが実行されません。解決方法をご教示いただければ幸いです。
回答を見る
  • ベストアンサー

HTMLからのBATファイル実行

HTMLと画像(ABC.GIF)、プログラム(123.EXE)、BATファイルをCDに記録して配布したいと考えています。 autorun.infでHTMLファイル(index.html)を実行します。 このHTMLファイルには、同じ場所にあるBATファイルへリンクが貼られています。 ◎BATファイルの内容(Windows Vista用) COPY ABC.GIF C:\TEST COPY 123.EXE "%USERPROFILE%\Desktop\" ◎BATファイルの内容(Windows XP用) COPY ABC.GIF C:\TEST COPY 123.EXE "%USERPROFILE%\デスクトップ\" ブラウザで表示して実際にBATファイルを実行したところ「ファイルが見つからない」というエラーが表示されCOPYコマンドは実行されませんでした。 確かに指定したパスにファイルは存在します。 その証拠に、リンクからではなく、直接BATファイルを実行すると希望した結果が得られました。 何か考えられることはございますでしょうか。 解決方法をお教えいただければ幸いです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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 の方法は 忘れてしまいました。→検索すれば見つかるかも。 以上。参考に!

souitami
質問者

お礼

Oh-Orange様 またまた、ありがとうございました。 ご提示いただきました案を含めて、いろいろと工夫してみたいと思います。 本当にご親切にありがとうございました。 今後とも宜しくお願いいたします。

その他の回答 (3)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

'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

souitami
質問者

補足

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)
回答No.2

★『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)
回答No.1

★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 ファイルでしょうか? ・よくは分かりませんが、上記の方法でコピーできるので解決すると思います。 ・以上。おわり。

souitami
質問者

補足

Oh-Orange様 回答ありがとうございます。 なるほど、ドライブレターをSETする必要があるわけですね。 最後にご指摘いただきましたとおり、この内容はインストールCDに使いたいと考えています。 そこで、再度、お知恵をお貸しください。 CD-ROMが挿入されているドライブのレターを、環境変数などを使ってSETすることは可能でしょうか。 もし無理な場合、ユーザーにレターを入力させるといった方法はあるのでしょうか。 なにとぞ宜しくお願いします。

関連するQ&A

  • sleipnir4でbatファイル実行

    HTMLにあるbatファイルのリンクをクリックするとブラウザ上でテキストで開いてしまいます。 sleipnir2だとbatファイルを実行できます。 sleipnir4でも実行させるにはどうしたらいいでしょうか?

  • batファイルの実行について

    batファイルを作成しました。 (ATコマンドにてスケジュールさせたいと考えてます。) ファイル自体をダブルクリックで実行すると正常に処理が完了しますが、コマンドプロンプトから実行しようとすると以下のエラーが発生します。 〓〓〓〓〓〓〓〓〓〓〓〓 C:\>cmd /c "E:\MirroringTool\SimpleFolderMirror\test.bat" 指定した名前は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されません。 〓〓〓〓〓〓〓〓〓〓〓〓 実行させたいbatファイルは以下のとおりです。 〓〓〓〓〓〓〓〓〓〓〓〓 echo off cls rem ↓SimpleFolderMirror.exeを解凍したフォルダ SET EXEFOLDER_PATH="E:\MirroringTool\SimpleFolderMirror\" rem ↓ログの出力フォルダ・ファイル SET LOG_DIR="E:\MirroringTool\SimpleFolderMirror\logs\" rem ↓ミラー元フォルダ1 SET COPY_FROM_PATH_01="S:\" rem ↓ミラー先フォルダ1 SET COPY_TO_PATH_01="E:\ORANT\OWS" cd %EXEFOLDER_PATH% SimpleFolderMirror.exe %COPY_FROM_PATH_01% %COPY_TO_PATH_01% > %LOG_DIR%logs.txt 〓〓〓〓〓〓〓〓〓〓〓〓 cd %EXEFOLDER_PATH%のところまでは処理は完了しているようなので、最後の行のところで発生しているようです。 何が原因でエラーが発生してしまっているのでしょうか? 宜しくお願い致します

  • batが実行できない

    すいません、緊急で教えてください。 簡単なバッチを作成し、test.batとしてwinXPでtest.batをダブルクリックして実行しようとしましたが、 一瞬だけ黒い画面がひらいて、実行されません。 仕方なくプロンプト上で手動でtest.batを実行しようとしましたが 下記エラーでどうもtest.batの文字が認識されないようです。 C:\>r 'r' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 当方、初心者なので、調べてもわかりませんでした。 すいませんが、教えてください。

  • batファイルの作成方法について

    batファイルの作成方法について 開いてるPPTファイルを終了して(dkill.exeにて) (1) C:\dkill.exe powerpnt.exe フォルダ内のPPTファイルを全削除して (2) del /f /q C:\test\*.ppt PCをシャットダウン (3) %windir%\system32\shutdown.exe したいのですが、batファイルを作って(1)(2)(3)を並べて実行すると 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」となって (2)ファイル削除が実行できません。 それぞれ別々に実行すれば問題なく実行できます。 おそらく、(1)の処理が終了しない状態で、(2)の削除が実行できないと思うのですが・・・ この3つの処理をひとつのbatファイルで実行するにはどうしたらよいでしょうか? 初心者なのでわかりやすい回答をお願いしますm(__)m

  • ctrl+c(copy)を実行するbat構文

    キーボードのカスタマイズボタンに、copy,paste,cut機能を割り当てたいのですが、割り当て方法が、exeファイル指定に限られています。 そこで、ctrl+c、v、xの動作をさせるbatファイルを作りたいのですが、構文がわかりません。 batからexeへのコンパイル方法は分かります。 コマンドプロンプト内のcopy/paste方法はいろいろ載っているのですが、windows画面上の普通の、範囲指定してのcopy/paste/cutをしたいのです。 よろしくお願い致します。

  • BATファイル実行にフォーカスを当てたい

    Windows2008サーバにRDPでWindows7から実行しています。 サーバにBATファイルを作成し、(XCOPYコマンド)データのバックアップを行います。 この時ですが、クライアント(Windows7)で実行させたBATファイルですが(コマンドプロンプト)画面が なぜか背面にかくれてしまい、BATの実行内容がみれなくなることがあります。また、BATの終了時に、正常終了かどうかの表示を行い、Pauseコマンドで止めていますが、これが、背面にかくれてしまい、いつ終ったのかわからない状態です。ずーっとBAT自動されたコマンドプロンプトの表示にフォーカスを当てたいのですが、BATに記述することにより、再度フォーカスを取り戻すようなコマンドはあるでしょうか?よろしくお願いします。

  • batファイルが実行できなくなりました。

    自宅でwin meを使用しています。 うっかりbatファイルの関連付けを変更してしまいました。 その後、batファイルを実行しようとファイルをダブルクリックすると、エディタが開いて、ファイルの内容を表示してしまいbatファイルが実行されません。 どうすれば元に戻すことが出来るのでしょうか?よろしくお願いします。

  • 複数のbatファイルを自動実行したい

    複数のbatファイルがあり、それをさらにバッチ化したいのですが 1行目のbatファイルしか実行してくれません。 原因と対応をご存知であれば 教えて下さい。 以下のhhh.batを実行した場合、aaa.batしか実行してくれません。 (もちろん、単体ではそれそれ実行できます。) hhh.batファイルの中身 c:\aaa.bat c:\bbb.bat c:\cccbat

  • batファイルに関して

    教えて下さい。 batファイルを作成し、実行しようと考えていますが、命令文 が複数あった場合、1つのbatファイルに記載する事は可能でしょうか? 例えば、  copy と pushd 等を一度に行いたい。 よろしくお願いします。

  • BATファイルの作成方法について

    初めてBATを作成する事になったのですが、こんなBATを作りたいのですがイマイチ分からず、 例えば: C:\にある○○のファイルと、 C:\WINDOWSにある○○のファイルを比較して、 もし、なければ、 C:\data\○○.exeを実行する もし、あれば C:\data\○○.exeを削除する 更に分かりましたら、 このファイルを実行する際に、 Windows修正プログラムに含まれている、update.exeのコマンドスイッチも付加できればありがたいのですが、 お分かりになる方どうか教えて下さい。 宜しくお願いします。