改行を含むクリップボード内の文字列でGoogle検索するバッチファイルのソースは次の通り。
@echo off
setlocal enabledelayedexpansion
rem クリップボードの内容を一時ファイルに出力する
powershell -command "Get-Clipboard" > temp.txt
rem 置換後のファイル名を指定する
set output=kaigyou-to-space.txt
rem もし置換後のファイルが存在していたら削除する
if exist %output% del %output%
rem 以下のforループで一時ファイルの内容を1行ずつ読み込み、置換処理を行う
set "alltext="
for /f "delims=" %%a in (temp.txt) do (
rem 変数lineに1行分のテキストを代入する
set "line=%%a"
rem 空行でなければ変数alltextに追加する(スペース区切り)
if not "!line!" == "" set "alltext=!alltext! !line!"
)
rem 先頭と末尾のスペースを削除する(先頭と末尾だけでなく、複数連続しているスペースも削除される)
for /f "tokens=* delims= " %%a in ("%alltext%") do set alltext=%%a
rem 結果をoutputファイルに出力する
echo %alltext% > %output%
rem 一時ファイルを削除する
del temp.txt
rem outputファイルの内容をクリップボードにコピーする
type %output% | clip.exe
del %output%
rem クリップボードの文字列でGoolgle検索する。ただし、クリップボードの文字列がURLならそのページを開く。
for /f "delims=" %%A in ('C:\Programs\cliputil\cliputil.exe -paste') do set clip_text=%%A
if %clip_text:~0,4%==http (
start "" "firefox.exe" -profile "C:\Users\user\Documents\Firefox_Profiles\08dvqk7w.default_xp" "%clip_text%"
) else (
start "" "firefox.exe" -profile "C:\Users\user\Documents\Firefox_Profiles\08dvqk7w.default_xp" "https://www.google.co.jp/search?q=%clip_text%&hl=ja"
)
exit
cliputil.exe だけのソースではクリップボード内の文字列に改行が含まれる場合に一番下の行の文字列しか使われない。その問題を解決するために、クリップボード内の文字列に含まれる改行を半角スペースに置換するバッチファイルを bing に問い合わせた。教わった方法を試してもうまくいかず、同じコードを何度も示すので、何度も訪ねた結果、ようやく求める結果が得られた。そのやり取りの一部は次のページの通り。
コメント