過去の桐井戸端BBS (桐ver.9)
23289 一括処理でファイル名を表に取り込みたい 古田博美 2003/11/11-18:09
古田博美といいます。
桐v9を使用しています。

マイコンピュータで指定したフォルダーのファイル名を
一括処理で表に取り込みたいのですが
どうすればできるのでしょうか?
ご指導ください。
23291 Re:ファイル名の取り込みを一括処理でするには アックン 2003/11/11-19:19
記事番号23289へのコメント
古田博美さん、こんばんは。ちょっと時間がないので、簡単に書きます。
マイコンピュータの操作で桐にファイル名を取り込むのは難しいと思いますが、
桐にはフォルダ名を表示して指定できる機能があるので、それを利用できます。
(と言うよりも、アプリケーションでフォルダを指定するときは、それが通常の方法だと思うのですが。)
そうやってフォルダを指定→中身のファイル名をすべて表に取得、
という一連の処理でよければ、リクエストしてもらったら、明日にでも書き込みするか、
ファイルをlzh圧縮してアップします。

23294 Re:ファイル名の取り込みを一括処理でするには 古田博美 2003/11/12-07:58
記事番号23291へのコメント
アックンさん
おはようございます。
理解力のとぼしい私ですので、よろしくお願いします。

>そうやってフォルダを指定→中身のファイル名をすべて表に取得、という一連
>の処理でよければ、リクエストしてもらったら、明日にでも書き込みするか、
>ファイルをlzh圧縮してアップします。
よろしくお願いいたします。

23295 Re:ファイル名の取り込みを一括処理でするには たゆー 2003/11/12-09:29
記事番号23289へのコメント
>マイコンピュータで指定したフォルダーのファイル名を
は、できませんが

もし、ダウンロードとかlzh形式ファイルの解凍が可能でしたら

下記の、
http://www2u.biglobe.ne.jp/~s_tanaka/

アイコン(フロッピーにLZHの文字がある)から、
「桐の作品一覧表」へ入り、以前の作品より

071 桐v8 再帰呼び出しサンプル 桐v7以降使用可能

この作品をお試しください。


23299 Re:ファイル名の取り込みを一括処理でするには 古田博美 2003/11/12-12:50
記事番号23295へのコメント
たゆーさん
ありがとうございます。

>071 桐v8 再帰呼び出しサンプル 桐v7以降使用可能

この作品をダウンロード後解凍しましたが
理解できませんでした。
・・・・・

再度検討します。
23300 Re:ファイル名の取り込みを一括処理でするには アックン 2003/11/12-13:33
記事番号23294へのコメント
古田博美さん> こちらこそよろしくお願いします。
ファイル名を取得するイベントを使用したソフト(ファイルリネーム)を一部割愛して先ほどアップしました
V9で動作確認してます。


・圧縮ファイルの解凍方法:50.lzh をダブルクリックすると、自動的にフォルダが出来ます。

1.操作説明
・起動ファイル: rename.wfm
・rename.wfmの「オプション」ボタン:取得したファイルをリネームするオプション設定画面が出ます。
(リネーム等の処理は動作しません。)

・オプション設定画面の「拡張子」ボタン:拡張子を指定する画面が出ます。
取得するファイル名の拡張子をあらかじめここで指定しておきます。

・rename.wfmの左上、「対象元フォルダ」のテキストボックス:クリック
またはダブルクリックでフォルダ指定画面が出ます。
フォルダを指定すると同時に、ファイル名を取得する処理が始まりますが、
処理経過メッセージがないので、ファイル数が膨大なときは固まったように見えます。(^^;
が、それでも、桐コマンドだけで処理するよりもかなり高速だと思います。
(以前は桐コマンドだけでやってました。)

・「終了」ボタン:終了するかどうか選ぶ画面が出ます。

2. ファイル名を取得するイベント
rename.kev の200行目で、バッチファイルを使ってテキストファイルにいったん取得してます。

3. 留意点
WindousXP、近頃の NT では動作確認をしていません。
私のマシンは 98SE, Me ですが、Me でも動作確認してません。(^^;
どなたか検証してくださると、助かります。
DOSコマンド(attrib)で生成したテキストファイルに、ディレクトリ名付きでファイル名が取得されます。
そのテキストファイルをご覧になればわかりますが、ファイル名(C:\XXX\XXX\
XXX.XXX)の先頭位置の桁が、Windowsのバージョンによって少し異なります。
これに対応するために、あらかじめ2種類のファイルを用意して、Windowsバージョンによって編集表を切り替えています。
もしエラーが出たときは、テキストファイル(tmp_moto.txt)をご覧になって、
ファイル名の先頭位置を数えて、下記の記述なり項目計算式を直してください。
"renameNT.tbl","rename9X.tbl"の違いは、項目計算式だけです。

・rename9X.tbl ウィンドウズ95・98用
項目[A] 項目計算式:#sstr([tmp_moto],28)  28文字目からファイル名
項目[属性] 項目計算式:#sstr([tmp_moto],3,8) 3〜8文字目が属性

・renameNT.tbl ウィンドウズNT用
項目[A] 項目計算式:#sstr([tmp_moto],7) 7文字目からファイル名
項目[属性] 項目計算式:#sstr([tmp_moto],1,6) 1〜6文字目が属性

・rename.kev の19〜25行目(フォーム開始イベント内)
 if( #部分一致(#osver,"NT",1) )
   object h=&hwindow, @フォーム.編集対象表 = "renameNT.tbl"
   編集表 "renameNT"
 else
   object h=&hwindow, @フォーム.編集対象表 = "rename9X.tbl"
   編集表 "rename9X"
 end

4. 余談
これははじめてイベントを使って書いたソフトでして、その後も部分的に手直しして
ちょこちょこ使っていたものです。今回のアップに際しては、質問に関係なさそうな
処理(ファイル名変更など)をばっさり削除してあります。すみません。
23311 Re:ファイル名の取り込みを一括処理でするには アックン 2003/11/12-18:18
記事番号23300へのコメント
古田博美さん> 肝心なことを書き忘れておりました。(^^;
えっと、このソフトは、あらかじめ指定しておいた拡張子を持つファイルだけ取得するので、
もしすべてのファイルを取得したいときは、rename.kev の 207〜215行をコメントアウトしてください。
(各行の先頭に * アスタリスクを入れて、注釈行とする。)

* if( &i=1 ) ・・
* 検索条件登録 ・・
* ,{ [A]・・
* 絞り込み ・・
* 絞り込み ・・
* 行削除 ・・
* 絞り込み解除 ・・
* 並べ替え ・・
* end

23315 Re:ファイル名の取り込みを一括処理でするには KH 2003/11/12-20:47
記事番号23289へのコメント
>マイコンピュータで指定したフォルダーのファイル名を
>一括処理で表に取り込みたいのですが
>どうすればできるのでしょうか?

なさりたいこととピントがずれているかも知れませんが、
先にフォルダ名入力コマンドでフォルダを指定しておきます。
仮に&DIRPにフォルダ名が格納されているとします。以下の
手続き例で&file名(配列変数)に300個まで格納されています。

名札 最大file数抽出
   変数宣言 整数 {&it}
   変数宣言 文字列{&workfile}
   変数宣言 固有,文字列{&file名[300]}
   変数宣言 固有,整数 {&file数}
   変数宣言 固有,整数 {&最大file数}
   代入 &workfile=#連結(&DIRP,"*.*")
   代入 &file数=1
   繰り返し (#ファイル検索(&workfile,&file数)<>#未定義)
       代入 &最大file数=&file数
       代入 &file名[&file数]=#ファイル名(#ファイル検索
          (&workfile,&file数),1)
       &file数=&file数+1
   繰り返し終了

後はこれをお望みのように使える筈です。

外していたらごめんなさい。


23316 Re:ファイル名の取り込みを一括処理でするには(一部訂正) KH 2003/11/12-21:01
記事番号23315へのコメント
>名札 最大file数抽出
>   変数宣言 整数 {&it}
>   変数宣言 文字列{&workfile}
>   変数宣言 固有,文字列{&file名[300]}
>   変数宣言 固有,整数 {&file数}
>   変数宣言 固有,整数 {&最大file数}
>   代入 &workfile=#連結(&DIRP,"*.*")
>   代入 &file数=1
>   繰り返し (#ファイル検索(&workfile,&file数)<>#未定義)
>       代入 &最大file数=&file数
>       代入 &file名[&file数]=#ファイル名(#ファイル検索
>          (&workfile,&file数),1)
>       &file数=&file数+1
>   繰り返し終了

一部訂正します。

名札 最大file数抽出
   変数宣言 文字列{&workfile}
   変数宣言 固有,文字列{&file名[300]}
   変数宣言 固有,整数 {&file数}
   変数宣言 固有,整数 {&最大file数}
   代入 &workfile=#連結(&DIRP,"*.*")
   代入 &file数=1
   繰り返し (#ファイル検索(&workfile,&file数)<>#未定義)
        代入 &最大file数=&file数
        代入 &file名[&file数]=#ファイル名(#ファイル検索
           (&workfile,&file数),1)
        &file数=&file数+1
   繰り返し終了
   手続き終了

戻る