MOMOYA.Labs 桃屋ラボ
最終更新日時
 2019年05月29日(Wed)
コンテンツ
    トップページ
  • VB
    • フォーム
    • コントロール
    • インターネット
  • C#
    • フォーム
    • ファイルシステム
    • データ統計
    • SQLite
  • VBA
    • Excel
    • Tips
  • PHP
    • 基礎
    • 文字列
    • ファイルシステム
    • 通信
    • PEAR
    • Twitter API
    • Tips
  • Ruby
    • Rubyを始めよう!
    • ファイルアクセス
    • ディレクトリ
    • Excel操作
  • Python
    • Pythonを始めよう!
  • OpenSocial
    • 各種情報
  • HTML&CSS
    • HTML5
    • CSS
    • iPhone向けサイト作成
    • HTML Tips
    • CSS Tips
  • Javascript
    • ウィンドウ関連
    • ナビゲーション
    • 便利なスクリプト
    • Tips
  • プログラム全般
    • .Net Framework
    • 数学?
    • その他
  • Oracle
    • Tips
    • 各種情報
  • DB2
    • Tips
  • MySQL
    • 開発で使いそうなSQL
    • メンテナンス
  • ネットワーク
    • デバイス
    • その他
  • Windows
    • Vista
    • Windows 7
    • IIS
    • Excel
    • 拡張
    • コマンドプロンプト活用
    • 不具合対応
    • ショートカットキー
    • Tips
  • Windows FreeSoft
    • ブラウザ(FireFox)
    • Web開発関連
    • グラフィック
    • プログラミング
    • SQL
    • VMware
    • プロジェクト管理
    • その他
    Mac
  • Linux&Unix
    • Kubuntu
    • Fedora
    • Debian
    • NetBSD
    • Tips
  • Linux Software
    • オンラインストレージ
  • インターネット知識
    • ホームページ作成
    • Javascriptで操作
    • アフィリエイト
    • ネットで見つけた面白いもん
    • 便利なサイト
    • 便利な活用方
    • Twitter
    • その他
  • iPhone
    • おすすめアプリ
    • Jailbreak
    • 検証
  • 雑記
    • ネットワーク関連
    • ハードウェア関連
    • セキュリティ関連
    • 読み方
    • 故障?保証対象?
    • その他
  • 雑記(IT・デジモノ以外)
    • 言葉の意味
    • 転職関連
    • その他
  • MOMOYA's FreeSoft
    • Keyboard Launchar
  • 個人的メモ
    • リンクメモ
    • ネタ
サイト内検索
Sponsored Link
プロフィール

名前:桃屋
歳/性別:20代/Male
生息地:東京都(23区内)
Sponsored Link
リンク(ジャンル別50音順|■ = 相互)
【 プログラム全般 】
■ MadCap ・ SQLの窓 ・ Wordpress初心者な技術屋の忘備録
【 VB,C# 】
・ C#,VB.NET入門 ・ DOBON.NET
【 PHP 】
・ phpspot ・ Smartyマニュアル ・ 忘れっぽいエンジニアのPHPリファレンス
【 API 】
・ Google Maps API リファレンス ・ Google MAPS APIプログラミング ・ Twitter API Viewer
【 HTML&CSS 】
・ Tag index
【 JavaScript 】
・ 432 + JavaScript Libraries ・ jsdo.it
【 その他のプログラミング言語 】
・ 逆引きPython ・ 逆引きRuby
【 プログラミング関連 】
・ 正規表現メモ
【 読み物 】
・ MSDN マガジン
【 Oracle 】
・ Oracle管理者のためのSQLリファレンス ・ 忘れっぽいエンジニアのORACLEリファレンス
【 Linux,UNIX 】
・ CentOSで自宅サーバー構築 ・ Fedoraで自宅サーバー構築 ・ FTP/理化学研究所 ・ Linuxコマンド逆引き大全 ・ Linuxで自宅サーバ
【 便利サイト 】
・ Wayback Machine
【 Webツール 】
・ .htaccess Editor ・ Convert C# to VB.NET ・ Convert VB.NET to C# ・ QRコード作成 ・ テキスト変換サービス
【 開業関連 】
・ プログラマーとSEのフリーランスのススメ
【 ブログ類 】
■ ぱんだぁにゃ ■ 元携帯屋店員がブログにちょうせん! ■ 日常気まぐれブログ
【 その他 】
・ 2018年 秋アニメ 一覧 ・ 2018年 夏アニメ 一覧 ・ 2018年 春アニメ 一覧 ・ アキバイズム
-> リンク一覧 
モバイルサイト
RSS 2.0
更新情報をRSSで取得!
アクセスカウンター


現在の閲覧者数:

設置日:2008年12月05日

[Windows-コマンドプロンプト活用] バッチファイルを作成してみる

バッチファイルとは?

バッチファイル(Batch File)とは、MS-DOS、OS/2、Windowsでのコマンドプロンプト(シェル)に行わせたい命令列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般に COMMAND.COMやcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する。バッチファイルはUNIX系オペレーティングシステムのシェルスクリプトに相当する。
Wikipedia より引用

なんて、書かれてもパッとしないんで、とりあえずは 一連の作業を一括で行わせるためのファイル とでも書いておきます。

例えば、以下のようなケースで使われる事が多いかと思います。
・ FFmpegやlameのような、コマンドで実行するタイプのアプリケーションを使用する場合、
  毎回コマンドで処理を行うのは面倒だからバッチファイルを作成して簡単に出力を行えるようにしたい。

・ データを移行する為、ローカルネットワーク内のマシンのC、D、E等のドライブに直繋ぎするのだけど、
  一回の作業で全部移行する気はなく、何度も接続をかけないといけない。
  何度も接続するのは面倒だからドライブを指定するだけで開けるようにしたい。

結論を言えば、面倒な一連の作業を1つファイルを叩くだけにし、利用者が楽できるようにするためのファイルです。


とりあえず、作ってみる

試しに、コマンドプロンプトのコマンドのヘルプの内容をhelp.txtとして出力するbatファイルを作成してみましょう。

help_exp.bat
@echo off
CD "%~dp0"
SET /p CMD="ヘルプを表示するコマンドを指定> "

IF %CMD% == quit GOTO eof

help %CMD% > help.txt
START help.txt

CALL %~nx0

行ごとに説明していきます。

1行目
@echo off
	標準出力を表示しないように指定しています。
	行頭の@がない場合、echo offが出力されますが、@を行頭に付ける事でその行を非表示にできます。
	通常、標準出力は必要ないので、バッチファイルの先頭には @echo off を記述します。

2行目
CD "%~dp0"
	バッチファイルを実行したディレクトリに移動します。
	%~dp0 なんて謎の文字列が並んでいますが、一旦ここでは"おまじない"ということで。後で説明します。

3行目
SET /p CMD="ヘルプを表示するコマンドを指定> "
	SETコマンドは、関数に値をセットするためのコマンドです。
	/pオプションをつけることで、ユーザーに値を入力させる事ができます。
	CMDが今回変数名で、"(ダブルクオート)で囲った文字列は、ユーザーに対して表示する文字列になります。
	/pオプションをつけない場合、=(イコール)の後に、変数に格納したい文字列を記述します。

	なお、設定したCMD変数の値を使う時は、%(パーセント)記号で %CMD% のようにかこむ必要があります。

5行目
IF %CMD% == quit GOTO eof
	IFは「もし」という意味合いを持つ英語で、意味もその通りです。
	この行は、書いてる通りに素直に捉えてみてください。

		「もし、"CMD"変数にセットされた値が"quit"ならば eof へ行け」

	今回、終了させる意味合いだけでGOTOコマンドを書いているだけなので飛ぶ先は作っていません。
	GOTOコマンドの飛ぶ先を指定する場合は

	:eof

	のように書く事で、位置先を指定する事ができます。

7行目
help %CMD% > help.txt
	この行が、メインのコマンド処理を行っている行になります。
	ユーザーが入力したコマンドのhelp(ヘルプ)をhelp.txtに出力する処理を行っています。
	途中に書かれている、>(大なり)は標準出力をファイルにリダイレクトするという意味を持ちます。
	また、>>(2重大なり)の場合は標準出力をファイルの末尾に追加するという意味合いを持ちます。

8行目
START help.txt
	この行は、なんとなく直感で分るのではないでしょうか?
	help.txtを始める(開く)という意味合いです。
	指定されたファイルを開くための既定のプログラムで実行されます。

10行目
CALL %~nx0
	CALLコマンドは、別のバッチファイルを呼び出すためのコマンドです。
	今回は、再帰的に実行させたいので、自分自身を呼び出しています。

	ただ、自分自身を呼び出していると書きましたが、2行目でも出てきた"おまじない"がまた出てきていますね。
	その"おまじない"はこの辺りで明かしておきます。

	まず、%0には自分自身(今回の場合help.bat)のフルパスが格納されています。
	そのパスは、ちょっと手を加えるだけで、一部分のみを展開することが可能になっています。
	今回の使用例から察しのついている方も居ると思いますが、%と0の間に修飾子をつけることで可能です。

	%0  	: 引用符付きのフルパスが格納されています。
	%~0 	: 全ての引用句(")を削除して%0を展開する。
	%~f0	: %0を完全修飾パス名に展開する。
	%~d0	: %0をドライブ名だけに展開する。
	%~p0	: %0をパスだけに展開する。
	%~n0	: %0をファイル名だけに展開する。
	%~x0	: %0をファイル拡張子だけに展開する。
	%~s0	: 展開されたパスはMS-DOSの「8.3形式」でも短い名前だけを含む。
	%~a0	: %0をファイル属性に展開する。
	%~t0	: %0をファイルの日付・時刻に展開する。
	%~z0	: %0をファイルのサイズに展開する。
	%~$PATH:0	: 
		PATH環境に指定されているディレクトリを検索し、最初に見つかった完全修飾名に%0を展開する。
		環境変数名が定義されていない場合、また検索してもファイルが見つからなかった場合は、
		この修飾子を指定すると空の文字列に展開する。

	複数の修飾子を組み合わせる事も可能なのもサンプルで分っていただけるかと思いますが、補足しておきます。
	2 行目の %~dp0 の場合は、%0のドライブ名とパスが展開されます。
	10行目の %~nx0 の場合は、%0のファイル名と拡張子が展開されます。

今回「バッチファイルとは何ぞや!」から入ったので、結構丁寧に書きました(丁寧に書いたつもり)が、今後はもうこんなに丁寧に解説は入れないのでその点はご了承ください。
コメントで簡易に説明入れる程度になると思います。詳しく知りたい所はマニュアルを参照してください。

ただ、最後にもう一度だけ言わせてください。

バッチファイルを作れると、煩わしい作業を簡単に簡略化できます!

Windowsその物を煩わしく思っている私が言うのもどうかと思いますが
「バッチファイル」に関する「本」の商品を自動的に表示しています。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。

作成日:2008年07月07日(Mon)

Labs SYSTEM Ver0.93 @ Copyright(c)2007−2025 MOMOYA SYSTEM