ちょっと変わったマニアな作品が集結

IEコンポーネントブラウザで閲覧中のページの
 タイトル
 URL
 選択中リンクのリンク先タイトル
 選択中リンクのリンク先URL
 選択中文字列
などを引数として、自作のバッチファイルに渡す方法を教えていただけないでしょうか。
また、渡す際の操作回数は1動作が望ましいです。
 Ctrl+iなどショートカットキーを一回押す
 ランチャーのアイコンを一回クリック
など。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>"TITLE"という名前のフォルダが作成


>"TITLE\ccc.txt"の中身は"URL"という文字列
変数の中身の参照は、% % で囲みます。

mkdir "%TITLE%"
echo %URL% >> "%TITLE%\ccc.txt"
にしてください。

>"delims="
>とはどういう意味なのでしょうか。

delimsの初期値は空白とタブなので、これを書かないと、タイトル中に空白があった場合、空白で区切った最初の単語だけが%%Aに入ります。実際にやってみてください。
"delims="と書くことで「区切り文字無し」となりタイトル全部が区切られずに%%Aに入ります。

>のFor Each ~ Nextループで複数のウインドウの情報を取得しようとしているようですが、ウインドウ一つだけ取得するにはどう書き換えればよろしいのでしょうか。
ウィンドウが1つしか無ければ問題ないですよね。複数あった場合、最初の1つだけ取るならIF文できますが、それが希望のウィンドウとは限らないので、この方法では無理があると思います。

アクティブなタブ、アクティブなウィンドウの検知については私がわからないだけかもしれないので、このあたりを何とかしたいなら、WSH Lab.で聞いてみて下さい。
    • good
    • 0
この回答へのお礼

変数の中身参照の仕方やdelimsなど、バッチプログラミングの説明までしていただき大変助かりました^^。
ありがとうございました。
アクティブなタブ、ウインドウを検出する方法か、別の方法を探してみたいと思います。

お礼日時:2005/06/17 19:15

#1です。


IEでも開いているウィンドウの情報がすべて出てきます。アクティブなウィンドウを調べるのは可能かもしれませんが、分かりません。

タブブラウザのアクティブなタブを知るのはVBSでは無理な気がします。どれがアクティブかはそのソフトの中で決まっていることなので。

WSH関係で高度な情報のあるBBSがあるので下記にURLを書いておきます。

>・それから、URL、タイトル、選択文字列がワンセットになっていますがひとつずつ渡すにはVBSをどのように記述したらよろしいのでしょうか。理解不足ですみません;。

引数を渡してそれにより出力内容を変えることも出来ますが、URL出力専用、タイトル出力専用にそれぞれ別のVBSファイルにするのも分かりやすいですね。

>・実は自作バッチファイルの方も試行錯誤の段階で、今はとりあえず下記のようなことをやろうとしています

やりたいことがよくわからないのですが、もし、ウェブページのスクラップのようなことがしたいのなら、「紙2001」http://www.ki.rim.or.jp/~kami/ はどうでしょうか?もしやりたいことがちがうとしても、「そもそもの本来やりたいこと」を質問されたほうが適切な回答が得られる可能性が高いと思います。

参考URL:http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/index.s …

この回答への補足

・この手の機能をWSHというんですか。結構本格的なものなんですね。参考になります。
VBSでアクティブタブを知るのは無理ですか;。
ショートカットキーからの呼び出しもそうだと思いますがこのあたりはブラウザに依存が強い内容なんでしょうかね・・・。




とりあえずタブを一つだけ開いた状態でならできそうですので試してみました。


[title.vbs]
******************
For Each window In WScript.CreateObject("Shell.Application").Windows
Set document=window.document
If typename(document)="HTMLDocument" Then
WScript.Echo document.title
End If
Next
******************


[url.vbs]
******************
For Each window In WScript.CreateObject("Shell.Application").Windows
Set document=window.document
If typename(document)="HTMLDocument" Then
WScript.Echo document.location.href
End If
Next
*******************


[tu.bat]
*******************
cscript //nologo title.vbs > file1.txt
cscript //nologo url.vbs > file2.txt
for /f "delims=" %%A in (file1.txt) do set TITLE=%%A
for /f "delims=" %%B in (file2.txt) do set URL=%%B
mkdir "TITLE"
echo "URL" >> "TITLE\ccc.txt"
********************


という3つのファイルを同一フォルダ内の用意し、tu.batを実行してみました。
その結果

"TITLE"という名前のフォルダが作成
"TITLE\ccc.txt"の中身は"URL"という文字列

となりました。%%A、%%Bにいれた値(文字列)をfor文の外で利用できないのでしょうか。




それからNo1の解答のときに書いてくださったコードについて伺いたいのですが、

http://ykr414.com/dos/dos05.html#07
によると
delimsは区切り文字セットということですが
"delims="
とはどういう意味なのでしょうか。

・set URL=%%A&goto L1
ではURLという変数に現在の%%Aの値を代入しているのではないのでしょうか。


・For Each window
・・・
・・・
Next
のFor Each ~ Nextループで複数のウインドウの情報を取得しようとしているようですが、ウインドウ一つだけ取得するにはどう書き換えればよろしいのでしょうか。




・紙2001やWebox、WebAutoなどWebを保存できるソフトをいろいろ使ったのですが、Webデータを自前プロキシのキャッシュとして保存する機能を持っていないものが多く、一部のJAVAアプレットなどうまく保存できないコンテンツがあるんですよね。
それで今のところはプロキシ機能を持っているWeb保存ソフトGethtnlを使っています。

補足日時:2005/06/15 19:39
    • good
    • 0

IEに表示中のページで、URL、タイトル、選択中文字列であれば、vbsで、



For Each window In WScript.CreateObject("Shell.Application").Windows
Set document=window.document
If typename(document)="HTMLDocument" Then
WScript.Echo document.location.href
WScript.Echo document.title
If document.selection.createRange().text="" Then
WScript.Echo "(not select)"
Else
WScript.Echo document.selection.createRange().text
End If
End If
Next

これを、aaa.vbs 等の名前をつけて、自作バッチファイル中で、
cscript //nologo aaa.vbs > file.txt
for /f "delims=" %%A in (file.txt) do set URL=%%A&goto L1
:L1
for /f "skip=1 delims=" %%A in (file.txt) do set TITLE=%%A&goto L2
:L2
for /f "skip=2 delims=" %%A in (file.txt) do set SELECTION=%%A

IE画面が複数開かれていれば、画面数x3行出力されるので、それを考慮してください。また特殊文字が含まれていると、バッチ処理がエラーになるかもしれませんが、それはバッチ機能の制約です。VBSを勉強して全てVBSで書くのが良いかと思います。

>選択中リンクのリンク先タイトル
これは実際に開かないと分からないと思います。
>選択中リンクのリンク先URL
これはちょっと調べられませんでした。無理かなあ。

IE以外のIE系ブラウザは分かりませんが、sleipnirならスクリプトが書けるので可能かもしれません。具体的なターゲットのブラウザソフトがあるなら、そのブラウザのコミュニティで聞くほうが早いと思います。

この回答への補足

ご回答くださりありがとうございます。VBSですか・・・

・とりあえず

For Each window In ・・・・
をaaa.vbsに記述。

cscript //nologo aaa.vbs >・・・・
をaaa.batに記述。

aaa.vbsとaaa.batを同フォルダに配置。そして「ぶら。」という名のIEコンポーネントブラウザで閲覧中aaa.batを実行しました。
その結果

***********************
http://www.vector.co.jp/vpack/filearea/win/writi …
Download: Windows > 文書作成 > その他
(not select)
http://www.vector.co.jp/vpack/filearea/win/busin …
Download: Windows > ビジネス > 計算・表計算・グラフ > 表計算
(not select)
http://www.hanshintigers.jp/team/profile/18.html
阪神タイガース公式サイト
(not select)
cscript //nologo aaa.vbs > file.txt
for /f "delims=" %%A in (file.txt) do set URL=%%A&goto L1
:L1
for /f "skip=1 delims=" %%A in (file.txt) do set TITLE=%%A&goto L2
:L2
for /f "skip=2 delims=" %%A in (file.txt) do set SELECTION=%%A
***********************

というfile.txtが作成されました。



・結果を見ると、全てのタブのURL、タイトル、選択文字列情報を取得してしまいますが、現在アクティブになっているタブに関してのみURLなどを送るにはどうしたらよろしいのでしょうか。(IEだとアクティブになっているウインドウに対応しそうな気がするのですが)

・それから、URL、タイトル、選択文字列がワンセットになっていますがひとつずつ渡すにはVBSをどのように記述したらよろしいのでしょうか。理解不足ですみません;。



・実は自作バッチファイルの方も試行錯誤の段階で、今はとりあえず下記のようなことをやろうとしています。(文法におかしいところがあるかもしれません・・;)

%1にタイトル(または選択文字列)、%2にURL(選択中リンクのリンク先URL)を渡します。

********************************************
if exist "C:\%1" goto Error else goto Main

:Error
echo "EXIST!"
goto End


:Main

rem テンプレートフォルダを中身ごと、タイトル名のフォルダにコピー
xcopy "C:\templete" "C:\%1" /I

rem "C:\%1"に置いてある"test.txt"にURLと改行を追加
echo "%2\n" >> "C:\%1\test.txt"

rem "C:\%1"に移動
cd "C:\%1"

rem "C:\%1"にある別のバッチファイルを起動
call ght.bat

rem "C:\%1"を開く
C:\Windous\explorer.exe "C:\%1"

goto End


:End
*******************************************



・「ぶら。」にはスクリプト機能はないようですね。
SleipnirはIEコンポーネントではないですよね。乗り換える踏ん切りがつきません・・・。
http://tabbrowser.ktplan.jp/angband.html

補足日時:2005/06/13 20:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング