Presentation is loading. Please wait.

Presentation is loading. Please wait.

P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title1 2015 年 2 月改訂.

Similar presentations


Presentation on theme: "P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title1 2015 年 2 月改訂."— Presentation transcript:

1 P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title1 2015 年 2 月改訂

2 本実習の目標 Purpose2 スクリプト言語の基本的な使用方法を習得し、 複数回の PHITS の実行を自動的にできるように する。 @echo off SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ for /l %i in (1, 1, 3) do ( %PHITSEXE% < lec0%i.inp copy phits.out phits%i.out ) pause exit Lec01.inp, lec02.inp, lec03.inp を 連続で実行するスクリプト

3 3Script ソフトウェアの動作内容を記述し制御するた めの、簡易的なプログラミング言語 スクリプト言語とは コマンドプロンプト( Windows の場合)で 実行できるコマンドを書き並べたファイル を作ることで、様々なソフトウェアの動作 を自動的に実行することができる テキストエディタで編集でき、拡張子が bat であれば使用可能( Windows の場合) ファイルのコピーや移動、ファイルの内容 の読み込みや書き出しが可能 あるソフトウェアを実行するコマンドを複 数書くことでその回数分の実行が可能

4 1.Windows 版 2.Mac 版 Table of contents4 実習内容

5 5Script “Hello PHITS world” と出力されるスクリプト ファイルを作成してみましょう 課題 1 テキストエディタで test.bat を開く Echo コマンドを使う Echo *** と書くことで *** の部分が書き出される test.bat をダブルクリックして実行 Test-1.bat @echo off pause exit ここにコマンドを書く おまじない 1 不必要な情報が 出力されなくなる おまじない 2 スクリプト終 了時に一旦停 止

6 6Script “Hello PHITS world” と出力されるスクリプト ファイルを作成してみましょう 課題 1 の答え合わせ Test-1.bat @echo off echo Hello PHITS world pause exit 実行すると、

7 7Script “Hello PHITS world” を新規ファイル file.txt に書 き出すスクリプトファイルを作成してみま しょう 課題 2 テキストエディタで test-2.bat を開く Echo コマンドを使う Echo *** > file.txt と > (リダイレクト)を使って書くことで *** の部分 が file.txt に書き出される Test-2.bat をダブルクリックして実行 Test-2.bat @echo off echo Hello PHITS world pause exit > (リダイレクト)を使う

8 8Script “Hello PHITS world” を新規ファイル file.txt に書 き出すスクリプトファイルを作成してみま しょう 課題 2 の答え合わせ Test-2.bat @echo off echo Hello PHITS world > file.txt pause exit 実行すると、 file.txt というファイルが作られる file.txt Hello PHITS world

9 9Script 変数に “Hello PHITS world” を代入して file.txt に 書き出してみましょう 課題 3 Set コマンドを使う Set aaa= *** と書くことで *** (文字列)の部分が変数 aaa に代入さ れる 書き出しは echo コマンドを使う 変数を使う場合は %aaa% のように % 記号で囲む Test-3.bat @echo off Set Hello PHITS world echo > file.txt pause exit 変数 aaa に代入しましょう 変数 aaa を書き出しましょう

10 10Script 課題 3 の答え合わせ Test-3.bat 実行すると、 file.txt の内容は file.txt Hello PHITS world 変数に “Hello PHITS world” を代入して file.txt に 書き出してみましょう @echo off set aaa=Hello PHITS world echo %aaa% > file.txt pause exit = の前後に空白を入れな いように注意しましょう

11 11Script 数字を代入した変数を使って定義した file2.txt に “Hello PHITS world” を書き出してみましょ う 課題 4 Set コマンドを使う Set /a iii= *** と書くことで *** (数字)の部分が変数 iii に数値として代入 される Set /a iii=iii+1 と書くことで演算が可能 文字列の一部として変数を使うことができる file%iii%.txt のように % 記号で囲んだものを差し込む Test-4.bat @echo off set aaa=Hello PHITS world set /a iii=1 set /a echo %aaa% > file.txt pause exit 1 が入っている変数 iii を 2 にするには? File2.txt となるように 書きかえましょう

12 12Script 課題 4 の答え合わせ Test-4.bat 実行すると、 file2.txt が新しく作成され file2.txt Hello PHITS world @echo off set aaa=Hello PHITS world set /a iii=1 set /a iii=iii+1 echo %aaa% > file%iii%.txt pause exit 数字を代入した変数を使って定義した file2.txt に “Hello PHITS world” を書き出してみましょ う

13 13Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 for コマンドを使う for /f "tokens=1-3" %a in (file.txt) do ( コマンド ) と書くことで file.txt から読み込んだ情報を使って括弧 () で囲まれたコマンドを実行する 読み込みは 1 行ずつ行い、読み込んだ情報は変 数 %a, %b, %c に代入される “tokens=1-3“ をオプションとして書くことにより、空 白を区切りとして左から 3 つの情報が変数として代入 される Echo コマンドを使う Echo %a >> file2.txt と書くことで変数 %a の内容が file2.txt に追記される (読み込んだ変数は % で挟む必要はない)

14 @echo off set /a iii=2 for /f "tokens=1-3" %a in (file.txt) do ( ) pause exit 14Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 Test-5.bat 読み込んだ “Hello PHITS world” が file2.txt に追記されるように しましょう

15 15Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 の答え合わせ Test-5.bat @echo off set /a iii=2 for /f "tokens=1-3" %a in (file.txt) do ( echo %a %b %c >> file%iii%.txt ) pause exit 変数 %a に ”Hello” %b に ” PHITS” %c に ”world” が代入されているので、 これらを並べて文章を作成する 実行すると、 file2.txt の内容は file2.txt Hello PHITS world

16 16Script File.txt をコピーして file1.txt, file2.txt, file3.txt を作成しましょう 課題 6 copy コマンドを使う Copy file.txt file1.txt と書くことで file.txt の内容が file1.txt にコピーさ れる for コマンドを使う for /l %i in (1, 1, 3) do ( コマンド ) と書くことで、変数 %i の数字を 1→2→3 と変 えながら括弧 () で囲まれたコマンドを実行する @echo off for /l %i in (1, 1, 3) do ( ) pause exit Test-6.bat 変数 %i を使って、 File.txt を File%i.txt にコピーしましょう

17 17Script File.txt をコピーして file1.txt, file2.txt, file3.txt を作成しましょう 課題 6 の答え合わせ Test-6.bat @echo off for /l %i in (1, 1, 3) do ( copy file.txt file%i.txt ) pause exit 実行すると、 file1.txt, file2.txt, file3.txt が作成され File1(2,3).txt Hello PHITS world

18 18Script If 文を使って、 file2.txt にだけ file.txt の内容 をコピーするようなスクリプトを作成し ましょう 課題 7 if コマンドを使う If %i == *** ( コマンド ) と書くことで変数 %i の数字が *** の場合の み括弧 () で囲まれたコマンドを実行する @echo off for /l %i in (1, 1, 3) do ( copy file.txt file%i.txt ) pause exit Test-7.bat If コマンドを使っ て、変数 %i が 2 の 場合のみコピーす るようにしましょ う

19 19Script If 文を使って、 file2.txt にだけ file.txt の内容 をコピーするようなスクリプトを作成し ましょう 課題 7 の答え合わせ Test-7.bat @echo off for /l %i in (1, 1, 3) do ( if %i == 2 ( copy file.txt file%i.txt ) pause exit 実行すると、 file2.txt のみ作成される

20 20Script PHITS を実行するスクリプトを作成し、自動で lec01.inp と lec02.inp, lec03.inp を計算してみま しょう 課題 8 PHITS の実行コマンドを定義する SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ と書くことで PHITS の実行コマンドがセットされる PHITS の実行形式は < の後にインプットファイルを 書く %PHITSEXE% < lec01.inp と書くことで lec01.inp を入力ファイルとした計算が実行 され る @echo off SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ for /l %i in (1, 1, 3) do ( ) pause exit Test-8.bat 変数 %i を使っ て、 3 つのイン プットファイル が動作するよう にしましょう Phits.out に番号 を付けてコピー しましょう

21 21Script PHITS を実行するスクリプトを作成し、自動で lec01.inp と lec02.inp, lec03.inp を計算してみま しょう 課題 8 の答え合わせ @echo off SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ for /l %i in (1, 1, 3) do ( %PHITSEXE% < lec0%i.inp copy phits.out phits%i.out ) pause exit Test-8.bat 実行すると、 phits1.out, phits2.out, phits3.out が作成される

22 1.Windows 版 2.Mac 版 Table of contents22 実習内容

23 23Script “Hello PHITS world” と出力されるスクリプト ファイルを作成してみましょう 課題 1 テキストエディタで Test_mac-1.command を開く Echo コマンドを使う –Echo "***" – と書くことでダブルクォーテーションで囲まれた *** の部分が書き出される Test_mac-1.command をダブルクリックして実行 Test_mac-1.command #!/bin/sh cd `dirname $0` echo "- push ENTER key to end -" read WAIT exit ここにコマンドを書く おまじない 1 おまじない 2 スクリプト終 了時に一旦停 止 Shift+@

24 24Script “Hello PHITS world” と出力されるスクリプト ファイルを作成してみましょう 課題 1 の答え合わせ 実行して表示されれば成功! Test_mac-1.command #!/bin/sh cd `dirname $0` Echo " Hello PHITS world " echo "- push ENTER key to end -" read WAIT exit

25 #!/bin/sh cd `dirname $0` Echo " Hello PHITS world " echo "- push ENTER key to end -" read WAIT exit 25Script “Hello PHITS world” を新規ファイル file.txt に書 き出すスクリプトファイルを作成してみま しょう 課題 2 テキストエディタで Test_mac-2.command を 開く Echo コマンドを使う Echo *** > file.txt と > (リダイレクト)を使って書くことで *** の部分が file.txt に書き出される est_mac-2.command をダブルクリックして実 行 > (リダイレクト)を使う Test_mac-2.command

26 26Script “Hello PHITS world” を新規ファイル file.txt に書 き出すスクリプトファイルを作成してみま しょう 課題 2 の答え合わせ 実行すると、 file.txt というファイルが作られる file.txt Hello PHITS world #!/bin/sh cd `dirname $0` Echo " Hello PHITS world “ > file.txt echo "- push ENTER key to end -" read WAIT exit Test_mac-2.command

27 27Script 変数に “Hello PHITS world” を代入して file.txt に 書き出してみましょう 課題 3 代入式を使う aaa= " *** " と書くことで *** (文字列)の部分が変数 aaa に代入さ れる 書き出しは echo コマンドを使う 変数を使う場合は ${aaa} のように $ 記号を先頭につけ る ( $aaa のように {} を省略できる場合もある) Test_mac-3.command #!/bin/sh cd `dirname $0` "Hello PHITS world " echo > file.txt echo "- push ENTER key to end -" read WAIT exit 変数 aaa に代入しましょう 変数 aaa を書き出しましょう

28 28Script 課題 3 の答え合わせ Test_mac-3.command 実行すると、 file.txt の内容は file.txt Hello PHITS world 変数に “Hello PHITS world” を代入して file.txt に 書き出してみましょう #!/bin/sh cd `dirname $0` aaa="Hello PHITS world " echo $aaa > file.txt echo "- push ENTER key to end -" read WAIT exit = の前後に空白を入れな いように注意しましょう

29 29Script 数字を代入した変数を使って定義した file2.txt に “Hello PHITS world” を書き出してみましょ う 課題 4 数字の演算を行う iii=$(( $*** + 1 )) と書くことで *** (文字)の部分が数値として認識し て 演算した後、変数 iii に文字として代入される 文字列の一部として変数を使うことができる File${iii}.txt のように ${} 記号で囲んだものを差し込 む Test_mac-4.command #!/bin/sh cd `dirname $0` aaa="Hello PHITS world" echo $aaa > file.txt echo "- push ENTER key to end -" read WAIT exit 変数 iii に 1 を代入しましょう iii=iii+1 の演算をさせ iii=2 としましょう File2.txt となるように 書きかえましょう

30 30Script 課題 4 の答え合わせ Test_mac-4.command 実行すると、 file2.txt が新しく作成 され file1.txt Hello PHITS world #!/bin/sh cd `dirname $0` aaa="Hello PHITS world" iii=1 iii=$(( $iii+1 )) echo $aaa > file${iii}.txt echo "- push ENTER key to end -" read WAIT exit 数字を代入した変数を使って定義した file2.txt に “Hello PHITS world” を書き出してみましょ う

31 31Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 do while コマンドを使う cat file.txt | while read a b c do コマンド done と書くことで file.txt から読み込んだ情報を使って括弧 do done で囲まれたコマンドを実行する 読み込みは 1 行ずつ行い、読み込んだ情報は変数 a, b, c に代入される 空白を区切りとして左から 3 つの情報を変数 a,b,c に代 入される Echo コマンドを使う Echo $a >> file2.txt と書くことで変数 a の内容が file2.txt に追記される ファイルを読み込むコマン ド それと同時に以下を実 行

32 #!/bin/sh cd `dirname $0` iii=2 cat file.txt | while read a b c do done echo "- push ENTER key to end -" read WAIT exit 32Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 Test_mac-5.command 読み込んだ “Hello PHITS world” が file2.txt に追記されるように しましょう

33 33Script File.txt の内容を読み込んで file2.txt に追記しましょ う 課題 5 の答え合わせ Test_mac-5.command #!/bin/sh cd `dirname $0` iii=2 cat file.txt | while read a b c do echo $a $b $c >> file${iii}.txt done echo "- push ENTER key to end -" read WAIT exit 変数 a に ”Hello” b に ” PHITS” c に ”world” が代入されているので、 これらを並べて文章を作成する 実行すると、 file2.txt の内容は file2.txt Hello PHITS world

34 34Script File.txt をコピーして file1.txt, file2.txt, file3.txt を作成しましょう 課題 6 cp コマンドを使う cp file.txt file1.txt と書くことで file.txt の内容が file1.txt にコピーさ れる For コマンドを使う for i in (seq 1 3) do コマンド done と書くことで、変数 i の数字を 1→2→3 と変えな がら do done で囲まれたコマンドを実行する #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do done echo "- push ENTER key to end -" read WAIT exit Test_mac-6.command 変数 i を使って、 file.txt を file${i}.txt にコピーしましょう

35 35Script 課題 6 の答え合わせ Test_mac-6.command #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do cp file.txt file${i}.txt done echo "- push ENTER key to end -" read WAIT exit 実行すると、 file1.txt, file2.txt, file3.txt が作成さ れ File1(2,3).txt Hello PHITS world File.txt をコピーして file1.txt, file2.txt, file3.txt を作成しましょう

36 36Script If 文を使って、 file2.txt にだけ file.txt の内容 をコピーするようなスクリプトを作成し ましょう 課題 7 if コマンドを使う if [ i = *** ] then コマンド fi と書くことで変数 i の数字が *** の場合のみ then fi で囲まれたコマンドを実 行する #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do cp file.txt file${i}.txt done echo "- push ENTER key to end -" read WAIT exit Test_mac-7.command If コマンドを使っ て、変数 i が 2 の場 合のみコピーする ようにしましょう [, =, ] のそれぞれの前後にスペースが必 要

37 37Script If 文を使って、 file2.txt にだけ file.txt の内容 をコピーするようなスクリプトを作成し ましょう 課題 7 の答え合わせ Test_mac-7.command #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do if [ $i = 2 ] then cp file.txt file${i}.txt fi done echo "- push ENTER key to end -" read WAIT exit 実行すると、 file2.txt のみ作成される [, =, ] のそれぞれの前後にスペースが必 要

38 38Script PHITS を実行するスクリプトを作成し、自動で lec01.inp と lec02.inp, lec03.inp を計算してみま しょう 課題 8 PHITS の実行コマンドを定義する PHITSEXE= “ /Users/***/phits/bin/phits274_mac.exe " と書くことで PHITS の実行コマンドがセットされる PHITS の実行形式は < の後にインプットファイルを 書く $PHITSEXE < lec01.inp と書くことで lec01.inp を入力ファイルとした計算が実行 され る #!/bin/sh cd `dirname $0` PHITSEXE=“/Users/***/phits/bin/phits274_mac.exe" for i in $(seq 1 3) do done echo "- push ENTER key to end -" read WAIT exit Test_mac-8.command 変数 ${i} を使っ て、 3 つのイン プットファイル が動作するよう にしましょう Phits.out に番号 を付けてコピー しましょう 自身の環境に合わ せて PATH を変え る

39 39Script PHITS を実行するスクリプトを作成し、自動で lec01.inp と lec02.inp, lec03.inp を計算してみま しょう 課題 8 の答え合わせ #!/bin/sh cd `dirname $0` PHITSEXE=“/Users/***/phits/bin/phits274_mac.exe" for i in $(seq 1 3) do $PHITSEXE < lec0${i}.inp cp phits.out phits${i}.out done echo "- push ENTER key to end -" read WAIT exit Test_mac-8.command 実行すると、 phits1.out, phits2.out, phits3.out が作成される

40 まとめ Summary40 スクリプト言語の基本的なコマンドの使い方を学 んだ PHITS を自動で複数回実行するスクリプトを作成 した 工夫次第で PHITS の実行方法は非常に便利になりま す。 基本的なコマンドを組み合わせて、使い勝手の良い スクリプトを作成しましょう!


Download ppt "P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title1 2015 年 2 月改訂."

Similar presentations


Ads by Google