もうすぐ正式リリースされるはずのBash on Ubuntu on Windows。ちゃんとしたUbuntuが入っているので、apt-getで計算化学プログラムを簡単にインストールできるのは以前書きましたが、ここにWindows側のbatファイルでjobを投げてみました。
@echo off set filecount=0 echo ┌─────────────────┐ echo │NWChem 6.3 on Ubuntu on Windows 10│ echo └─────────────────┘ :start if '%1'=='' goto end rem Windows⇔Bash(Ubuntu)パス変換 rem 小文字変換参考URL:http://qiita.com/q1701/items/d81e51a64f41ca841da6#2-5 set input=%1 set drive=%input:~0,1% set fpath=%~p1 set fname=%~n1 for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set drive=%%drive:%%i=%%i%% set drive=/mnt/%drive% set fpath=%fpath:\=/% set bashpath=%drive%%fpath%%fname% set /A filecount=%filecount%+1 echo 《 Job #%filecount% : %~n1 》 echo start : %date% %time% bash -c "nwchem %bashpath%.nw &> %bashpath%.log" echo finish : %date% %time% echo. shift goto start :end pause exit
コマンドプロンプト上からbashは呼び出せるので、-cでコマンドを投げます。UbuntuとWindowsではパスが異なるので(Ubuntu上では/mnt以下にWindowsの各ドライブがマウントされている)、パス変換のブロックを入れています。この例はNWChemですが、bash -c以下のダブルクオーテーション内を変えることで、他のプログラムにも応用が効きます。
リンクを作らずに実行ファイルを置くだけにしている場合は、そのフォルダまでWindows上で移動してからbashを起動すると、記述が簡略化できることもあります。例えばこんな感じで。
@echo off set pridir=S:\priroda\linux :start if '%1'=='' goto end set fullname=%~d1%~p1%~n1 cd /D %pridir% copy %1 input.in > nul set /A filecount=%filecount%+1 echo 《 Job #%filecount% : %~n1 》 echo start : %date% %time% bash -c "./mpiexec -np 6 ./p input.in output.out" copy output.out %fullname%.out del input.in /q del output.out /q echo finish : %date% %time% echo. shift goto start :end pause exit
Leave a Reply
コメントを投稿するにはログインしてください。