変更リストを参照したファイル名の変更にNo.04281
Majima さん 04/05/05 02:18
 
大変お世話になっております。
ファイル名の変更についてお尋ねいたしますが、例えば以下のような
任意のファイル名に変換しようとするファイルリストがありますが、
このリストを参照したファイル名の一括変換ということを、マクロで
実現できるでしょうか。

*****************************************************

変更前   変更したいファイル名(全く規則性が無い)
100.txt → 200404012_10229.txt
101.txt → 200403312_01430.txt
102.txt → 200403302_03330.txt
103.txt → 200403292_05512.txt
104.txt → 200403281_95454.txt
  ・
  ・
  ・
こういったファイルリストが650まで続きます。

*****************************************************

秀丸のマクロでなくても、ファイル名変換のソフトは色々とある
ようですが、連番とかファイル名の一部追加・削除といった規則性の
ある変換ではなく、全く任意のファイル名に変更というものが見つから
なくて(見つけられなくて)どうしようかと困っています。

どなたか良いアイディアがありましたらご教授ください。

[ ]
RE:04281 変更リストを参照したファイル名No.04282
アルビレオ さん 04/05/05 05:46
 
秀丸ユーザーのアルビレオです。

>秀丸のマクロでなくても、ファイル名変換のソフトは色々とある
>ようですが、連番とかファイル名の一部追加・削除といった規則性の
>ある変換ではなく、全く任意のファイル名に変更というものが見つから
>なくて(見つけられなくて)どうしようかと困っています。

そういうソフトがないのは、ソフトを使わなくてもできるからです。
秀丸エディタを使って以下のようなテキストを書き、目的のファイルがあるフォ
ルダに拡張子を.batにして保存します。
---- rename.batの内容 ----
ren 100.txt 200404012_10229.txt
ren 101.txt 200403312_01430.txt
ren 102.txt 200403302_03330.txt
ren 103.txt 200403292_05512.txt
ren 104.txt 200403281_95454.txt
---- ここまで ----

あとはそのファイルを直接ダブルクリックするか、コマンドプロンプトでその
ディレクトリに移動してからコマンドラインに
rename
と打ち込んでEnterを押すだけです。

マクロサーバや田楽サーバを使えばマクロからファイル名を変更することもでき
ますが、これくらいならバッチファイルを書いた方が簡単でしょう。

[ ]
RE:04282 変更リストを参照したファイル名No.04283
三月 さん 04/05/05 10:40
 
>そういうソフトがないのは、ソフトを使わなくてもできるからです。
>秀丸エディタを使って以下のようなテキストを書き、目的のファイルがあるフォ
>ルダに拡張子を.batにして保存します。
>---- rename.batの内容 ----
>ren 100.txt 200404012_10229.txt
>ren 101.txt 200403312_01430.txt
>ren 102.txt 200403302_03330.txt
>ren 103.txt 200403292_05512.txt
>ren 104.txt 200403281_95454.txt
>---- ここまで ----
>
すこし、補足します。

renameは内部コマンドで存在するので、名前を変えたほうが良いです。
henko.batとか明らかにない名前を使ったほうがよいです。

コマンドプロンプト等でrename /? とやると
--------------
ファイル (複数可) の名前を変更します。

RENAME [ドライブ:][パス]ファイル名1 ファイル名2
REN [ドライブ:][パス]ファイル名1 ファイル名2

ファイル名2 には新しいドライブもパスも指定できないので注意してください。
--------------
とか、でます。(WinXPの場合の結果)

renとrenameはさすがに同一視されないでしょうが。

[ ]
RE:04283 アルビレオさん三月さん有難うごNo.04284
Majima さん 04/05/05 15:06
 
アルビレオさん三月さん

相談の件解決しました。有難うございました。
とても初歩的な質問&秀丸マクロの質問ではありませんでしたね。
もう一つ未解決な点がありまして、ここで質問をしてもいいものかと
思いますが、ご質問させて頂きます。

実はファイル名を変更したいファイルの中には txt ファイルだけで
なく、html ファイルもありまして、全てのファイルをファイル名を
整えてプレーンテキストとして入手したいというのが最終目的です。

html ファイルも同様にバッチファイル一括変換した後、不必要な
タグを取ればいいのですが、問題は文字コードにあります。私の扱う
ファイルは日本語・韓国語混在のユニコードで表記されているのが
多く、単純にバッチファイルで txt へ変換すると文字化けして
しまいます。(それをまた htm ファイルに変換すると読めるのですが)

html ファイルを一度開いて「名前を付けて保存」でユニコード
テキストを選んで保存すれば、秀丸でユニコードテキストとして
文字化けせずに開けますが、ファイル数が多いとその作業も面倒
でして・・・。バッチファイルでコード設定とかも出来るのでしょうか。

[ ]
RE:04284 色々といじっていたところ・・No.04285
Majima さん 04/05/05 23:15
 
手元の htm ファイルを見てみると、インコードが charset=utf-8 だった、charset=
x-jis だったりと色々でして、charset=utf-8 のファイル
はバッチファイルでテキストに変換しても、文字コードは維持されて
いて、ファイルを開くと、秀丸画面の上段にもちゃんと [UTF-8] と
表示されていました。これなら特に問題はありません。問題になって
いたファイルは htm ファイル内の文字コード宣言の部分が charset=x-jis
になっていまして、これをそのままテキストファイルに変換して開いて
みると、韓国語の部分だけが以下のように文字化けして表示されます。
日本語はきちんと表示されますがね。

***************************************************************

<font class=head><b>&#48512;&#51088; &#46020;&#49884;</b></font>
<p style=margin-top:15px>&#48512;&#51088;&#44032; &#47566;&#51060; &#49324;&
#45716; &#45208;&#46972;&#44032; &#48512;&#44053;&#54620; &#45208;&#46972;&#
45796;. &#48512;&#51088;&#44032;

***************************************************************

そこで秀丸のほうでフォントを韓国語のフォントに直しても結果は
同じです。こういった htm ファイルの特徴は日本語・韓国語混在の
文書にも関わらずブラウザーでのインコードの設定は shift-JIS に
なっていて、いつも「どうして多言語使用文書なのに shift-JIS で
見れるのだろう」と思っていました。この場合の韓国語は、韓国語の
文字を直接入力しているのではなくて、韓国語のそれぞれの文字の
コード値を入力して、それをブラウザー上で韓国語に変換している
ものなのだろうと推測しているのですが・・・。ここでは文字コードに
ついて述べる場ではないので、後は自分で文字コードに関する本を
読んで解決していきたいと思います。

よって前回書き込んだ、バッチファイルによるファイル名&拡張子変更
の際の文字コード設定に関する質問は、自分で解決することにします。
お騒がせしてすみませんでした。

[ ]
RE:04285 色々といじっていたところ・・No.04287
アルビレオ さん 04/05/06 02:29
 
アルビレオです。

>バッチファイルでテキストに変換しても、文字コードは維持されて
>いて、ファイルを開くと、秀丸画面の上段にもちゃんと [UTF-8] と
>表示されていました。これなら特に問題はありません。問題になって
>いたファイルは htm ファイル内の文字コード宣言の部分が charset=x-jis
>になっていまして、これをそのままテキストファイルに変換して開いて
>みると、韓国語の部分だけが以下のように文字化けして表示されます。
>日本語はきちんと表示されますがね。

あのバッチファイルはファイル名を変更するだけで、ファイルの中身は一切変更
しません。
文字化けするのはファイル名を変えたからではなく秀丸が文字コードを認識する
ときですね。
試しに元のhtmlファイルをデスクトップ上の秀丸アイコンにドロップしてみれば、
テキストファイルと同じように表示されることがわかります。

>そこで秀丸のほうでフォントを韓国語のフォントに直しても結果は
>同じです。こういった htm ファイルの特徴は日本語・韓国語混在の
>文書にも関わらずブラウザーでのインコードの設定は shift-JIS に
>なっていて、いつも「どうして多言語使用文書なのに shift-JIS で
>見れるのだろう」と思っていました。

結局UTF-8がちゃんと認識されないんじゃなくて、複数の文字コードが混在して
いるファイルだったわけですね。
IE はそういうところを柔軟に対応しすぎて、事実上エンコード指定を無視して
しまうことがあるのが悩ましいです。

それからちょっと気になったのですが x-jis でなくて x-sjis ではないでしょ
うか?x-jisというエンコード指定はないはずですが…

ついでに encode は発音としては「インコード」でも正しい気がしますが、カタ
カナ表記としては「エンコード」の方が一般的です。大したことではないですが、
文字でコミュニケーションするためには世間に合わせておいた方がスムーズかと
思いますが、まあ余計なことなので気にしないでください。(^^;

>この場合の韓国語は、韓国語の
>文字を直接入力しているのではなくて、韓国語のそれぞれの文字の
>コード値を入力して、それをブラウザー上で韓国語に変換している
>ものなのだろうと推測しているのですが・・・。

&#xxxxx;という形式は「文字実体参照」と呼ばれるものです。この単語でWebを
検索すると色々と説明が見つかるでしょう。

秀丸(に限らずたいていのソフト)は文字コードが混在したテキストをうまく扱え
ないので、一番ベストなのはそのhtmlファイルを作ったソフトでもう一度開いて
UTF-8で保存しなおすことです。
でもそのソフトが手元にはないかもしれませんね。
またはそのソフトでも直接文字コードで打ち込んでいるかも。

>ここでは文字コードに
>ついて述べる場ではないので、後は自分で文字コードに関する本を
>読んで解決していきたいと思います。

本で調べれば原因は理解できても、解決策を見つけるのは難しいと思います。

ちょっと手間はかかりますが、秀丸とIEがあればできる方法を書いておきます。
リネームするより前にやっておいた方がいいでしょう。

1.念のため別に作業用フォルダを作り、そこにエンコードがx-jisになっている
 ファイルをコピーする。

2.元のファイルをIEで、コピーしたファイルの方を秀丸で開く。

3.秀丸で charset=x-jis の部分を charset=utf-8 に書き換える。

4.書き換えたファイルを「名前を付けて保存」で文字コードをUTF-8に指定して
 保存する。

5.秀丸で実体参照になっている部分に対応する場所をIEで探し、IEでテキストを
 選択してコピー、秀丸側の対応個所にペーストする。
 秀丸の文字コードがUTF-8になっていればたぶん文字化けせずペーストできる
 と思いますが、あまり自信がありません。
 全ての韓国語を貼り付け終わるまで繰り返します。秀丸で &# を検索すれば
 見落としがなくて作業が楽になります。

6.そのファイル内の韓国文字を全部置き換えたら秀丸でもう一度保存すれば完了。
 変換後のhtmlファイルをIEで開けば正しく変換されたか確認できます。

※おまけ
・(3)と(4)をワンタッチで行なうマクロ

replaceall "charset=x-jis","charset=utf-8";
saveas filename2,utf8;

[ ]
RE:04287 とても参考になりましたNo.04288
Majima さん 04/05/06 12:06
 
アルビレオさん

とても参考になりました。有難うございます。

>それからちょっと気になったのですが x-jis でなくて x-sjis ではないでしょ
>うか?x-jisというエンコード指定はないはずですが…

ごもっともです。私の単純ミスです。

>ついでに encode は発音としては「インコード」でも正しい気がしますが、カタ
>カナ表記としては「エンコード」の方が一般的です。大したことではないですが、
>文字でコミュニケーションするためには世間に合わせておいた方がスムーズかと
>思いますが、まあ余計なことなので気にしないでください。(^^;

普段気にせずにいましたが、質問を書き込む際に「インコード」なのか
「エンコード」なのか迷っていました。用語の問題は細かいことでも
統一しておかないと、言わんとすることが上手く伝わらない場合が
ありますからね。

>&#xxxxx;という形式は「文字実体参照」と呼ばれるものです。この単語でWebを
>検索すると色々と説明が見つかるでしょう。

勉強になりました。

>ちょっと手間はかかりますが、秀丸とIEがあればできる方法を書いておきます。

今の所、この作業はどうしても手作業が必要な気がします。XPの場合、
htm ファイルを開いて、ctl+A でコピーした後秀丸に貼り付けて、
コード設定をユニコードにするのが、一番目標とする作業に近づけます。
こうすると、不必要なダグを後で取り除く必要もありませんしね。
そもそも htm 文書のタグ部分だけを機械的に取り除くことも、かなり
危険性があると思っているのですが・・・。テキストには手を付けずに
本当にタグだけ取ってくれるのかと。心配性でしょうか。

[ ]
RE:04288 とても参考になりましたNo.04289
アルビレオ さん 04/05/06 13:28
 
アルビレオです。

>今の所、この作業はどうしても手作業が必要な気がします。XPの場合、
>htm ファイルを開いて、ctl+A でコピーした後秀丸に貼り付けて、
>コード設定をユニコードにするのが、一番目標とする作業に近づけます。
>こうすると、不必要なダグを後で取り除く必要もありませんしね。

すいません、最終的にテキストのみにすることをうっかり忘れていました。
Ctrl+Aによるコピー&ペーストでまず大丈夫なはずです。

>そもそも htm 文書のタグ部分だけを機械的に取り除くことも、かなり
>危険性があると思っているのですが・・・。テキストには手を付けずに
>本当にタグだけ取ってくれるのかと。心配性でしょうか。

タグを取り除くだけだとスクリプトやスタイルシートが残ってしまうこともあり
ます。
テキストとして表示されている部分だけ取り出したいなら、Ctrl+Aの方が安全で
しょうね。

[ ]