MATLAB Answers

1から始まる連番のフ​ァイル名を任意の数字​から始まる連番のファ​イル名に変換する方法

10 views (last 30 days)
塁 小熊
塁 小熊 on 11 Sep 2021
Commented: 塁 小熊 on 11 Sep 2021
こんにちは。小熊塁と申します。
タイトルにある通り、1から始まる連番のファイル名を任意の数字から始まる連番のファイル名に変換したいと考えております。
かつて他の質問にてCSVデータから画像を生成する方法を教えて頂いたのですが、その際にファイル名が1.png 2.png…のようになり、CSVごとにそのように生成されました。
それぞれのCSVの画像データを一つのフォルダにまとめて格納したいのですが、同様のファイル名であるため一つ一つのファイル名を変更する必要があります。
しかし、画像データは10000枚以上に及ぶため煩わしいと考えました。
そこでタイトルのような事がMATLAB上で出来ないかと思い、[ https://jp.mathworks.com/matlabcentral/answers/804971- ]この質問を参考にスクリプトを試したのですが、勉強不足で恐縮なのですが、どの箇所を変更すれば思い通りに動作するのか分かりませんでした。
この件に関して、アドバイス等ご教授いただければ幸いです。
よろしくお願いします。
  2 Comments
塁 小熊
塁 小熊 on 11 Sep 2021
ウエノさん。 返信ありがとうございます。
全くその通りですね。プログラミングで行えれば…とばかり考え、外部のツールを用いるという選択肢が頭からすっかり抜けていました。
挙げて頂いたソフト・ツールを試してみたいと思います。
ありがとうございました。

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 11 Sep 2021
Edited: Hernia Baby on 11 Sep 2021
会社だと機密の関係でインストールできないケースがあると思いますので、一応書いておきます
(ちなみに自分は無断で窓の社でインストールすると会社の人に怒られます)
可能であれば@Atsushi Uenoさんのおっしゃる通り、外部ツールで楽することが一番です
カレントディレクトリ内~.pngの名前をここでまず一気に抜きだします
tmp = dir('*.png');
fname = {tmp.name};
~.pngの数だけ新しい名前を生成します
ここが今回変わったところです
任意の数字からスタートしたいとのことなので、それを n とします
詳細は sprintf をご確認ください
n = 50; % ← ここからスタート
cnt = n;
while cnt <= length(fname) + n-1 % ← データ長分だけ繰り返す
nfname{cnt-n+1} = sprintf('%i.png',cnt); % ← ここで「数字.png」を作ってる
cnt = cnt+1;
end
名前を書き替えます
movefile はファイルやフォルダーの移動または名前変更を行います
ここではfname内の名前からnfname内の名前に一対一で書き換えてます
for k=1:length(fname)
movefile(fname{k}, nfname{k});
end
  1 Comment
塁 小熊
塁 小熊 on 11 Sep 2021
@Hernia Baby さん 返信ありがとうございます。 コードの解説も含め、丁寧に教えて下さりありがとうございます。 外部ツールを用いても尚痒い所に手が届かない場合もあると思うので、非常に助かります。 ありがとうございました。
また、こちらの回答は当初の私が想定していたようなものであると判断したので、採用させて頂きたいと思います。

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!