「start」ボタンを押せば1ファイルづつnotegetでファイル名を切り出し
コマンドラインツールに渡し、実行が終了したことを確認して
次のファイルを渡す、といったものです。
・実行すると、3ファイル目までは上手くいくのですが、
4ファイル目(cnt = 3の時)になぜか毎回「システムエラー」の
エラーダイアログが出てきます。
・処理終了を確認してから次のファイル名を引数に渡しているので、
どこが悪いのか皆目検討がつきません。
・ソースコード:
(「A_VS11.exe」か「A_VS10.exe」が件の処理用実行ファイル。
ファイル名を引数に渡すと、cinで数字を入力するよう求めてくる。
入力して改行コードを送ると同階層にファイル出力を行い、出力し切ると終了する仕組み)
#include "hspext.as" #packopt name "batch_split" Splits = 100 sdim FileList, 1000 * 1000, 2 dirlist FileList(0), "*.txt", 1 if(stat != 0){ FileSum = stat notesel FileList(0) count = 0 repeat FileSum noteget GetLine, cnt if(instr(GetLine, , "ans") == -1){ FileList(1) += GetLine + "\n" count++ } loop if(count == 0) :end } screen 0,500, 200 title "ファイル数:" + count input Splits pos 74,0 :objsize 426, 215 :listbox Listpos, 0, FileList(1) pos 0, 34 :objsize 64,24 button "delete", *del button "start", *start stop *del notesel FileList(1) notedel Listpos count-- objprm 1, FileList(1) title "ファイル数:" + count stop *start OS = sysinfo(0) OSVer = double(strmid(OS, -1, 3)) if((instr(OS,,"9X") != -1) | (OSVer < 6.1)) :SoftFlg = 10 :else :SoftFlg = 11 repeat count title "状況:"+(cnt+1)+"/"+count notesel FileList(1) noteget FileName, cnt pipeexec tmp, "A_VS"+SoftFlg+".exe " + FileName, 0 while pipeget ln if(stat == 0) : _break if(stat == 1){ StrSplits = str(Splits) for k, 0, strlen(StrSplits) pipeput peek(StrSplits, k) wait 10 next pipeput $0D //CR wait 10 pipeput $0A //LF wait 10 } wait 10 wend wait 100 loop end
解決策を教えて下さい。
……最悪、バッチファイルを自動生成するだけのアプリに逃げるかもしれませんが。