ぜんぜん開発の進捗から話変わりますが。
人からttlマクロで親階層のフォルダパス取得できない?って聞かれたので書いてみました。
確かに、ttlマクロには簡素な機能しかないから実装しようとするとすこし考えるなーって思った。
と、まぁ前置きはさておき。
こんな感じにしときゃ指定パスの親フォルダパスを取得できます。
サブルーチンの定義部分
goto SKIP_GETPARENTFOLDER ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■ call GetParentFodler ;■ BasePathにパスを指定してサブルーチンをcallすると ;■ ParentFolderPathに1階層上のフォルダまでのパスが入る。 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ :GetParentFodler ParentFolderPath="" :Retry_GetFolders strsplit BasePath "\" 9 if result=9 then sprintf2 ParentFolderPath '%s\%s\%s\%s\%s' ParentFolderPath groupmatchstr1 groupmatchstr2 groupmatchstr3 groupmatchstr4 sprintf2 ParentFolderPath '%s\%s\%s\%s\%s' ParentFolderPath groupmatchstr5 groupmatchstr6 groupmatchstr7 groupmatchstr8 BasePath=groupmatchstr9 goto Retry_GetFolders else FldrCnt=result if FldrCnt>1 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr1 if FldrCnt>2 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr2 if FldrCnt>3 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr3 if FldrCnt>4 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr4 if FldrCnt>5 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr5 if FldrCnt>6 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr6 if FldrCnt>7 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr7 if FldrCnt>8 sprintf2 ParentFolderPath '%s\%s' ParentFolderPath groupmatchstr8 endif strtrim ParentFolderPath "\" return :SKIP_GETPARENTFOLDER
フォルダ区切り文字で分割して再構築しつつ分割数の一つ手前までを再結合して取って来てます。
これをマクロのどっかに張り付けといて、呼び出すときはこんな感じで。
ParentFolderPathをBasePathに突っ込んでもっかい走らせればどんどん上階層いけるよって話。
BasePath="C:\temp\test\sample.txt" call GetParentFodler ; ParentFolderPath ⇒ C:\temp\test BasePath=ParentFolderPath call GetParentFodler ; ParentFolderPath ⇒ C:\temp
こーゆーのも需要があるなら予め良く使う多言語の機能の類似処理作っておくのもありかもねーって思った。というお話でした。