イラストAC フリー素材

2010年07月09日


バッチファイル自身が存在するディレクトリを使用して CSCRIPT.EXE を使う

バッチファイル内で、%~dp0 は、バッチファイル自身が存在するディレクトリ
に置換されるので、そのバッチファイルと同じディレクトリに .vbs( または .wsf )
を置いて、コマンドプロンプト用の VBScript を起動する為のコマンドファイルと
して使う事ができます。

VBScript 内で記述される Wscript.Echo は、Wscript.exe で実行されてしまうと、
一回の表示毎にメッセージボックスが表示されて、処理が中断しますが、Cscript.exe
で実行する場合は、コマンドプロンプトに表示されて処理が継続されます。このよう
に、CScript.exe で実行する事を前提とした処理は、バッチファイルで起動してやる
と良いです。
@echo off
cscript.exe //NOLOGO "%~dp0vbspathlist.vbs"

VBScript 側では以下のようにすると、Wscript.exe での実行を抑制する
事ができます。
str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	Wscript.Echo "スクリプトを直接実行しないで下さい"
	Wscript.Quit
end if



posted by at 2010-07-09 11:29 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする

2010年07月12日


コマンドプロンプトの & と && と ||

& は、VBScrpt からのイメージでは「連結」ですが、この場合は同じような
意味で、コマンドを一行で複数実行する方法ですが、&& と || にはさらに
条件が付加されます。

&&

&& 記号の前にあるコマンドが正常に終了した場合にのみ、
後ろにあるコマンドを実行するために使います。
1 つ目のコマンドが実行され、そのコマンドが正常に終了
した場合にのみ、2 つ目のコマンドが実行されます。  
ここで「正常」とは、コマンドのエラーコード が 0 です

||

|| 記号の前にあるコマンドが失敗した場合にのみ、後ろに
あるコマンドを実行するために使います。
1 つ目のコマンドが実行され、そのコマンドが失敗した場合
(コマンドから返されるエラーコードが 0 よりも大きい場合)
にのみ、2 つ目のコマンドが実行されます。 

以下は、エラーコードをバッチファイル内で実現する exit /B を使って
テストしています。
@echo off

echo 最初が成功したら次も実行
pause
Call :normal && dir

echo 最初が失敗したら次も実行
pause
Call :error || dir

echo 以下はどちらも dir が実行されない
pause
Call :normal || dir
Call :error && dir

goto :end

:normal
exit /B 0


:error
exit /B 1


:end



posted by at 2010-07-12 23:28 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする

2013年12月11日


バッチファイル : IE8 でファイルをダウンロードして、ダウンロードしたディレクトリをエクスプローラで開く

この方法は、IE8 の時に検証した方法で、現在はダウンロードされたディレクトリがレジストリ内に無いようなので使用できません。ただ、バッチファイルでレジストリを参照する手法は使えると思います。

IE が最後にダウンロードで使用したディレクトリはレジストリ内にあるので、reg /query で該当場所を表示します。For コマンドで、プログラムの実行結果の標準出力を取り込めるので、ディレクトリ部分を取り出して変数にセットして、Explorer で実行します。

For のオプションとして、"skip=4 tokens=3 delims=	" を指定しています。delimsには、タブを指定しており、reg コマンドのデータの区切りがタブなので、3番目のトークンが目的の文字列です。そこで、tokens=3 となって、%%i にセットされます。該当行だけが必要なので、skip=4 となっています。

※ skip= は、実際の行数に対して指定します

Windows7 では、区切りがスペースに変わっており、他の仕様も微妙に変更されているので以下のようにする必要がありました

"skip=1 tokens=4 delims= "

※ delims= の右側はスペース1文字です。
-noframemerging は、存在する引数ですが何も指定しないと IE8 が終わってしまうので指定しています。iexplore.exe で、指定した URL からファイルをダウンロードして、ダウンロードしたディレクトリを開きます Microsoft ドキュメント Internet Explorer Command Line Options
@echo off
start /wait iexplore.exe -noframemerging http://lightbox.on.coocan.jp/download/WinOfSql102.lzh
FOR /F "skip=4 tokens=3 delims=	" %%i IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer" /v "Download Directory"') DO (
	Explorer /e,%%i
)

関連する記事

IE11 でファイルをダウンロードしてその終了を待つく
2008/7/28 - Internet Explorer 8 と信頼性

※ For コマンドの詳細は、For /? で表示されます


posted by at 2013-12-11 03:15 | Comment(0) | バッチファイル | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します