アプリ版:「スタンプのみでお礼する」機能のリリースについて

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ファイルを実行すると希望した結果が得られました。
何か考えられることはございますでしょうか。
解決方法をお教えいただければ幸いです。
宜しくお願いします。

A 回答 (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 の方法は
忘れてしまいました。→検索すれば見つかるかも。
以上。参考に!
    • good
    • 0
この回答へのお礼

Oh-Orange様

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

お礼日時:2007/03/27 18:03

'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様の方で他にお知恵がございましたら、是非とも拝借したいと思います。
宜しくお願いいたします。

補足日時:2007/03/27 10:38
    • good
    • 0

★『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 コピー元, コピー先』となります。
 文字列は必ず(”)文字で囲って下さい。バッチファイルと違い省略できません。
 複数の文字列を結合するには『&』文字で繋げます。ソースを参考に編集を。
・以上です。→正常に実行できるかテストして下さい。
    • good
    • 0

★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することは可能でしょうか。
もし無理な場合、ユーザーにレターを入力させるといった方法はあるのでしょうか。
なにとぞ宜しくお願いします。

補足日時:2007/03/26 20:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています