過去の桐井戸端BBS (桐ver.9)
28749 数値データの頭にゼロをつけて4桁にしたい 小林深志 2005/01/18-22:33
こんにちは
先日、画像ファイル名の登録ではお世話になりました

その画像ファイルフォルダを仕事場にあるサーバ内に入れておいたところ、
一覧表示しても1.jpeg、10.jeg、100.jeg、1000.jpeg、101.jpegといったようになってしまって順番に並んでくれない(win2000)との理由から、
無断で0001.jpg、0002.jpgのようにファイル名を変更され始めてしまいました。

まだ1600個のうちの数十個ですが、勝手に変えた人物はすごく恐縮しています。
もちろん、私のPC内にもデータはあり、元に戻すことも可能ですが、
桐の方で項目定義を文字列として[番号]に入力してある1、2、3、4のデータを4桁の0001、0002、0003、0004というように
文字置換が可能であれば、そうしてもいいかなと思っています。
このような文字置換はどのようにしたらよいでしょうか。

また、桐とは関係ないのですが、同じフォルダ内の1.jpg、2.jpg・・・ファイルを0001.jpeg、0002.jpg・・・のように
リネイムすることは可能でしょうか。
可能であれば、その方法もお教えいただければと思います。すでに変更してあるものもあるのですが、
それで難しいということであれば、先に書いたように元に戻すことは可能です。

よろしくお願いします
28753 Re:文字置換について 宮城 2005/01/19-01:57
記事番号28749へのコメント
小林深志さん、こんにちは。

>桐>の方で項目定義を文字列として[番号]に入力してある1、2、3、4
>のデータを4桁の0001、0002、0003、0004というように文字置換が可
>能であれば、そうしてもいいかなと思っています。

簡単です。数値と文字列、二つの項目を追加します。数値側には
#数値([1、2、3、4に置換したい文字列項目])で 1、2、3、4を置換します。
そして、文字列項目を
#文字列([1、2、3、4で置換した項目],4)で置換します。

28754 Re:文字置換について 宮城 2005/01/19-08:57
記事番号28749へのコメント
リネームについてですが、私はわけがわからなくなるのを避けるために、
新旧ファイル対応表(work.tbl)をまず作ります。

こんな感じ。

work.tbl 
[現ファイル名]文字列
[新ファイル名]文字列

ここでは、ファイル名は拡張子なしとしておきます。新ファイル名は、
#文字列(#数値([現ファイル名]),4)で置換できることは前述したとおりです。
イメージどおりの対応となっていることを確認したうえで、
次の一括処理で変換します。(表はすでに開いている前提です。)

変数宣言 文字列{&現ファイル名,&新ファイル名,&文字列ダミー}
変数宣言 整数{&終了状態}
表 "work.tbl"
ジャンプ 行番号=先頭
繰り返し(.not #終端行)
 代入 &現ファイル名=[現ファイル名]+".jpg"¥
   ,&新ファイル名=[新ファイル名]+".jpg"
 ファイル名変更 &現ファイル名,&新ファイル名,終了状態=&終了状態
 ケース開始
  ケース(&終了状態<>0)
   &文字列ダミー=&現ファイル名+"の変換に失敗しました。"
   確認 &文字列ダミー
 ケース終了
 ジャンプ 行番号=次行
繰り返し終了
&文字列ダミー="ファイル名変更を終了しました。"
確認 &文字列ダミー
終了

# まったく芸がないなぁ。
# work.tblにどうやって[現ファイル名]をセットするかって要ります?
28759 Re:文字置換について 幅田 2005/01/19-19:08
記事番号28754へのコメント
宮城さん
いつもお世話になっております。

># work.tblにどうやって[現ファイル名]をセットするかって要ります?

補足です。
桐9の新機能で、エクスプローラーでコピーしたファイル名を
桐のデータに取り込むことができます。

Windowsのエクスプローラーで該当のファイル群が入ったフォルダを開きます。
メニューバーの編集から「すべて選択」を実行して、
そのフォルダ内のファイルをすべて選択した状態(青色反転)にします。

桐に取り込みたいファイルを開きます。(この場合work.tbl)
桐のメニューバーの編集から「形式を選択して貼り付け」を実行し、
OKを押すとファイル名が桐の先頭項目に取り込むことができます。

ですから、先頭項目は「現ファイル名」にしておいてください。


28761 Re:文字置換について 小林深志 2005/01/20-00:08
記事番号28754へのコメント
宮城さんこんにちは
早速コメントをありがとうございます
書き込みについては、朝のうちに職場で確認したのですが、久しぶりの残業で、
自宅に帰って作業をしてみるのが遅くなりました。

番号を文字列の4桁にすることには成功しました。
又、新旧ファイル名だけのwork.tblも作成できました。

一括処理については、桐にそうした機能があることは知っていたものの、
初めてのことなのでとりあえずそのままコピーをして実行してしまいました。
現状では、ファイルの変換に失敗しましたとのエラーが出ます。
私の説明不足のせいなのですが、多分、画像ファイルのフォルダを指定していないせいではないかと推察します。
下記の教えていただいた一括処理の中に次の画像フォルダパスを挿入するとしたら、
どこへ挿入すればいいのでしょうか。
また、推察自体が間違っていれば、ご指摘ください。
よろしくお願いします。
C:\Documents and Settings\小林深志\My Documents\遺跡遺物台帳\資料写真\

28769 Re:文字置換について 宮城 2005/01/21-01:06
記事番号28761へのコメント
小林深志さん、こんにちは。

>下記の教えていただいた一括処理の中に次の画
>像フォルダパスを挿入するとしたら、どこへ挿入すればいいのでしょうか。

変換対象ファイル、work.tbl、cmd、全部おんなじフォルダにあるという前提になってます。
違うということであれば、ここの記述を変えます。

 代入 &現ファイル名="C:\Documents and Settings\小林深志\My Documents\遺跡
遺物台帳\資料写真\"+[現ファイル名]+".jpg"¥
   ,&新ファイル名="C:\Documents and Settings\小林深志\My Documents\遺跡
遺物台帳\資料写真\"+[新ファイル名]+".jpg"

これで絶対パス記述になりますから大丈夫でしょう。でも画像ファイルがあるところに全部置いたほうが簡単かと思いますが。

>一括処理については、桐にそうした機能があることは知っていたものの、初めて
>のことなのでとりあえずそのままコピーをして実行してしまいました。

ある表につきそのレコード全件につき一件ずつ処理させる古式ゆかしき一括処理です。
詳細はヘルプでコマンド参照していただきたいのですが、概略こんなことをしています。

変数宣言:組込み以外にこんな変数使うぞと桐に教えます。
表 "work.tbl":表を開く。すでに開いおいて使うのなら不要。
ジャンプ 行番号=先頭:まあ普通開いたら先頭レコードにいるんだけどそ
            れでも先頭レコードへいかせる。
繰り返し(.not #終端行):「繰り返し終了」までの間の処理を#終端行
              (=最終行の次)にいくまで繰り返す。
代入:レコードの項目値を変数にほうり込む。
ファイル名変更:変数に該当するファイル名を該当するファイル名に変更する。
ケース〜:失敗したときの認知用。う〜ん、入れとくもんですね。
確認〜:その前の行の記載は「代入」のコマンド記述をさぼってます。変数
    にほうり込んだ内容を簡易ダイアログで表示するお手軽コマンドです。
ジャンプ 行番号=次行:これ忘れるといつまでも先頭レコードでループし続けます。

28773 Re:文字置換について 小林深志 2005/01/21-10:10
記事番号28769へのコメント
宮城さんこんにちは
いろいろありがとうございます
現在職場で書き込みを読みましたが、今日も残業なので、実際に試してみるのは今夜になります。
結果の報告が遅くなりますが、ご了承ください。

>これで絶対パス記述になりますから大丈夫でしょう。でも画像ファイルがあ
>るところに全部置いたほうが簡単かと思いますが。
説明不足ですみませんでした。
「遺跡遺物台帳」のフォルダ内には今回の遺物写真の桐ファイルだけではなく、桐で作った遺跡台帳をはじめ
いくつものファイルが混在しているため、画像ファイルだけをその中にフォルダを作って格納しています。
私としては、この方がすっきりしているような気がします。

文字置換の方法も教えていただいたので、今後は環境設定で画像フォルダを指定するのでなく、
フルパス(絶対パス)でファイル名を記述してみようかとも考えています。
環境設定では、今回の桐ファイルだけでなく、すべてに共通となってしまうみたいなので・・・

それにしても、ファイル名変更は、桐以外のコマンドプロンプトなどを使用するのではないかと考え
質問をしたのですが、これまでも桐でできるのは驚きです。

これからもよろしくお願いします。


28776 文字置換成功 小林深志 2005/01/21-22:07
記事番号28769へのコメント
宮城さんこんにちは
おかげ様で、ファイル名の置換に成功しました。

> 代入 &現ファイル名="C:\Documents and Settings\小林深志\My Documents\遺跡
>遺物台帳\資料写真\"+[現ファイル名]+".jpg"¥
>   ,&新ファイル名="C:\Documents and Settings\小林深志\My Documents\遺跡
>遺物台帳\資料写真\"+[新ファイル名]+".jpg"

この方法を試すつもりでしたが、間違ってもいけないので下記の

>これで絶対パス記述になりますから大丈夫でしょう。でも画像ファイルがあ
>るところに全部置いたほうが簡単かと思いますが。

の助言から、今回の関連ファイルを一旦「資料写真」フォルダに移し、以前教えていただいた一括処理を実行しました。

確かに、このようにしておくと、環境設定で画像フォルダを指定しなくても表示が可能ですね。
他のファイルの参考にしたいと思います。

一括処理を実行した結果ですが、エラーも出ました。当然ですが、まだ撮影が終わっておらず、
元の画像ファイルがないもの。あと、1000番台以降のファイルがすでに4桁になっていたためのものです。
よく考えれば当たり前ですが、999番までの処理とすればよかったんですね。
work.tblで1000番以降を削除しておかなかったばっかりに、ずっとESCキーを押し続けました。
写真資料が5桁になったときには気をつけないと・・・

ありがとうございました

戻る