今日はコマンドプロンプトで作業することがあったのでメモとして残しています。
elastixという医用画像処理用ソフトを使用することがありまして、
このソフトはコマンドプロンプトから処理を行います。
実行ファイルは.batというバッチファイルになります。
MacやLinuxでコマンドの知識は少しあったのですがWindowsではコマンドが多少異なるので使用してきませんでした。
今回、初めてバッチファイルを使用するので色々心配でしたが思っていたよりも処理が単純で
書きやすかったのが印象です。
elastixについては時間があれば、書いていけたらいいなと思いますが
今日はメモなのでelastix以外でのコマンドについて残していきます。
まず 変数 %% or %
画像名やフォルダ名の入力を省略するために変数に代入します。
%%[変数名]
変数名の前に"%"を付けることで変数として扱われます。
コマンド上では"%"でいいのですが、バッチファイルでは"%%"にするようです。(謎)
以下変数はバッチファイル用"%%"で書いています。
次に for文 for %%[変数] in (リスト) do (コマンド)
for文を使って変数に繰り返し代入をするために使用します。
for文には for の後に "/l" ・・・"スラッシュ+L"を入れることで
リストの部分が ([初期値],[増分値],[終了値])と指定することが出来ます。
for /l %%a in (8,-2,-3) do echo %%a
echoはコマンドプロンプトに表示させる命令で、上のfor文ならば
8、6、4、2、0、-2とコマンドプロント上に代入された文字が一行ずつ表示されます。
最後に テキストファイル読み込み
これが大変だと思っていましたが、なんと!for文で解決しました。
for の後ろに "/f" と入力することでファイルリストを変数に入力してくれました。(なんていい子)
for /f "[オプション]" %%a in (ファイルリスト) do ()
ファイルリストに書かれた一単語目ファイル名を入力すれば変数に代入されます。
"aaa bbb"ならば"aaa"のみ代入されます。
"aaa,bbb"ならば"aaa,bbb"と読み込まれます。
オプションは読み込み方法を変更します。
一行すべて読み込む場合には "delims="と入力します(ダブルコーテーション含む)
もしCSV形式などカンマで区切られているものを一つずつ読み込む場合には"delims=,"と
書けば
"aaa,bbb" は
"aaa"
"bbb"
と別々に読み込まれます。
おまけ
実際には上のやり方で完成するはずだったのですが、実行時にポカをしてしまい。
フォルダ名を間違えて作成してしまいました。(for文で大量作成)
よって、フォルダ名を変更するコマンドを使用したので残しておきたいと思います。
move [現存フォルダ名] [新しいフォルダ名]
"move"を使うことでフォルダの中に含まれているファイルはそのままでファイル名のみ変更出来ました。(ほっ)
気まぐれ更新になってますが、勉強したことをこれからも残していきたいと思います。
ではでは
2014/1110 追記
for文で変数がうまく展開されないことがあったので追記
遅延環境変数なるものが存在しそれをfor文外で有効にしてから変数を感嘆符(!)で囲んでます。
setlocal enabledelayedexpansion
よく理解していないので記事には出来ませんが
ぐぐってたら上のコマンドが複数のサイトで紹介されていました。
Yahoo知恵袋のベストアンサーを参考にさせて頂きました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1092589030
2014/1110 追記
for文で変数がうまく展開されないことがあったので追記
遅延環境変数なるものが存在しそれをfor文外で有効にしてから変数を感嘆符(!)で囲んでます。
setlocal enabledelayedexpansion
よく理解していないので記事には出来ませんが
ぐぐってたら上のコマンドが複数のサイトで紹介されていました。
Yahoo知恵袋のベストアンサーを参考にさせて頂きました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1092589030
0 件のコメント :
コメントを投稿