| もくもくさんこんにちは、全てを桐だけでしようとせずにエクスプローラーなどを 併用して簡単にした方が良くないでしょうか。 例えばDドライブに画像フォルダーがあるとして、その名前が「C:\画像」 だとしてそのフォルダーの中に2004や2005や2006があり、そのフォルダーの下に 20060522日本橋や20060628日本橋やその他があるとして要は最初の2004や2005 や2006の隣に2007を作ればいいのじゃないでしょうか? 他のドライブにコピーしたい時はエクスプローラーを使えば簡単です。
以下の一括で半角数字の2006や2005を指定してみて下さい。 作成したい年度のフォルダーが作れると思います。
表 変数削除 共通 変数削除 * call フォルダー検索() proc フォルダー検索() var Str{&S指定folder,&Sreadtbl="mokumoku.tbl",&S新年度=#STR(#西暦年(#日時値)+1)\ ,&S旧年度=#STR(#西暦年(#日時値))},Int{&Icount=0,&I終了,&Iend},Long{&L行=0} フォルダ名入力 初期値=#一括パス名,プロンプト="読み取るフォルダーを指定して下さい",\ 許可作業=フォルダ,&S指定folder &S指定folder=#SSTR(&S指定folder,1,#L(&S指定folder)-1) if (&S指定folder<>"") 印字開始 "mokumoku.k3", 終了状態=&Iend 印字 "###" 印字 "### WIN桐 00" 印字 "###" 印字 """現folder"",""文字列""" 印字 """新folder"",""文字列""" 印字 """文字数"",""整数""" 印字終了 改頁=しない 表作成 &Sreadtbl,定義ファイル="mokumoku.k3",モード=専有,終了状態=&I終了 if (&I終了=1) 行挿入 [現folder]=&S指定folder ジャンプ 行番号=前行 繰り返し (.not #eof) call フォルダー名取得(&S指定folder) ジャンプ 行番号= #総件数-(#代入(&L行,&L行+1)) &S指定folder=[現folder] end キー入力 (20,2), プロンプト="作成年度を入力して下さい", モード=無変換, 上書き=する, 初期値=&S新年度, 終了状態=&Iend,&S新年度 キー入力 (20,2), プロンプト="旧年度を入力して下さい", モード=無変換, 上書き=する, 初期値=&S旧年度, 終了状態=&Iend,&S旧年度 if (&Iend=1) コマンド "置換 終了状態=&Iend,[新folder]=#S([現folder],"+""""+&S旧年度+""""+","+""""+&S新年度+""""+")" 置換 終了状態=&Iend,[文字数]=#l([新folder]) 並べ替え {[文字数] 昇順} 繰り返し (.not #eof) フォルダ作成 [新folder], 終了状態=&Iend ジャンプ 行番号=次行 end end else 確認 "表は他の方が使用中です" end end end proc フォルダー名取得(Str &Sフォルダー名) var Str{&Sfile名},Int{&Icount=0,&Iend} &Sfile名=#ファイル検索(&Sフォルダー名+"\*",#代入(&Icount,&Icount+1)) while (&Sfile名<>"") &Sfile名=#ファイル検索(&Sフォルダー名+"\*",&Icount) * cond (#mod(&Icount,177)=1) 確認 &Sfile名+" No "+#STR(&Icount) if (#last(#ファイル属性(&Sfile名,1),1)="D") 行挿入 [現folder]=&Sfile名 &Icount=&Icount+1 else if (#last(#ファイル属性(&Sfile名,1),1)=" ") &Icount=&Icount+1 else if (&Sfile名="") 繰り返し中止 end end end
|