韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

RIETAN-FPの実行方法1: batファイルのコマンド解説

今回からは、RIETAN-FPを実際に実行する為の方法について数回に分けて説明していきたいと思います。

インストールしたけど動かし方が分からない

RIETAN-FPをインストールしたはいいものの、RIETAN.exeをクリックしても一瞬コンソール画面が表示されるだけです。
あれ、一体どうやって動かすんだろうか。インストールの仕方間違ったかしらん。

そう。私は、まるで分かっていませんでした。RIETANの仕様を。

図書館で借りた「粉末X線解析の実際:9章 RIETAN-FPを使ってみよう」を参照するとRIETAN-FPを実行するには

  1. 入力ファイル *.ins
  2. X線回折データファイル *.int
  3. パッチファイル *.bat(Windows)または*.command(Mac OS X)

が必要との事。(*は任意のファイル名です。3つとも同じ名前にします。)

入力ファイル(*.ins)およびX線回折データファイル (*.int)は、RIETAN-FPをインストールした時点で【RIETAN_VENUS_examples】フォルダの各サンプルにあるため準備の2/3は出来ているということになりますね。やったぜ。
しかし、このbatファイルとは一体何でしょうか。わたし気になります。

ということで、今回はbatファイル(Windows)についての説明をしたいと思います。
また、今回から【RIETAN_VENUS_examples】フォルダ内にある試料を練習として使用したいと思います。
【RIETAN_VENUS_examples】フォルダ内のinsファイルとintファイルが存在する好きな試料を選んで練習しましょう!!

忙しい人の為のBatch Fileの使い方

拡張子.batで表されるBatch File(バッチファイル)は、コマンドプロンプトで実行できる処理をまとめたファイルのことを指します。
調べるとMS-DOSがどうのこうの書かれていたりしますが、知ったところでRIETANには関係ないので割愛。
みんな忙しいと思うのでバッチファイルの使い方を超特急で詰め込んでいきましょう。

まずは今後使うであろうコマンドから

ECHO:コマンドの表示切替およびメッセージの表示

ECHO ON:コマンドラインにコマンドを表示
ECHO OFF:コマンドラインにコマンドを非表示
ECHO コメント文:コメント文を表示


SET環境変数の設定及び表示

SET 変数名=(主に)パスや値
使用するときは変数名を%変数名%という感じに, %で挟む
※イコールの前後にスペースがあるとエラーになることがある
使用例:Cドライブ直下にあるテストフォルダのtest.txtを開く

ECHO OFF
CLS
SET TEST=C:TEST
%windir%\system32\notepad.exe %TEST%\test.txt

環境変数にはユーザー環境変数とシステム環境変数があるよ。ぐぐってね。

CLSコマンドラインに出力されたテキストの消去

REM:コメント文の挿入

REM [コメント文字列]


IF:処理の分岐

IF [NOT] exist <パス名> <コマンド>
: 指定したファイルが存在する[しない]場合、<コマンド>を実行
IF [NOT] 文字列1==文字列2 <コマンド>
: 二つの文字列が一致する[しない]場合に実行
※文字列の片方が空の場合はエラーとなる。空の可能性があるときは文字列を""で括る
IF 文字列1 <演算子> 文字列2 <コマンド>
: 二つの文字列を比較演算子で比較して、真の場合に実行
※==の時とは違って、NOTが使えない


比較演算子:IF文などで使う演算子

EQU : 等しい
NEQ : 等しくない
GEQ : 以上
LEQ : 以下
GTR : より大きい
LSS : より小さい(=未満)


PAUSE:処理を途中でポーズする

PAUSE「続行するには何かキーを押してください」と表示されます


pushd:(現在のディレクトリを記録して)ディレクトリの移動

このコマンドは【フォルダA】から【フォルダB】を行き来するのに便利なコマンドです。しかもこれはドライブの違いやネットワークの違いを気にすることなく移動することができます。
pushd "【フォルダB】のパス"……【フォルダB】に移動
popd ……【フォルダA】に戻る
通常、ディレクトリの移動には
cd(change directory)を使用します。しかし、このcdはその名の如くディレクトリの移動が主たる機能であるため、本来ドライブの移動には使われません(使われるし使えるけど)。使えないというのはWindowsが9x系のOS時代の話です。近年のWindowsはNT系と呼ばれるOSに移行しておりcdにオプションを付けることでドライブを変更できるようになりました。9x系のWindowsを使用している場合はドライブの変更を行うときは
C:\> D:
D:\>
とするか、このpushdを使いましょう。
WindowsNTをお使いの皆様は
cd /d [移動先のパス]
とすれば異なるドライブに移動できます。しかし、この場合ネットワークの共有フォルダ上を移動できないため、やはりpushdを使うことが無難だと言えます。
batファイルを複数のOSで実行し、かつどうしてもOSによって処理を変更したい場合は、NT系Windows環境変数OSが"Windows_NT"となっているかどうかを判定することで条件分岐させる方法があるようです。
例)
SET Folder_A=C:\Folder_A
SET Folder_B=D:\Folder_B
IF "%OS%" == "Windows_NT" cd /D "%Folder_B%"
IF NOT "%OS%" == "Windows_NT" "%Folder_A%\pushd" "%Folder_B%"


なんか、NT系の場合はディレクトリの移動のみで、9x系の場合はpushdディレクトリの行き来ができるため、不自然な感じがします。IF文の条件分岐を1行で終わらせる為の策でしょうか。
なかなかNT系と9x系でのこの処理の違いについて解説しているサイトが見つからないため、初めて見たときこのコードの意味を理解するのに苦労しました。

長くなってしまったので今回はここまでにします。目次作ったのにあんまり意味がなかったですね 笑
次回は、実際にbatファイルを作成してRIETANを実行したいと思います。