質問: 1から始まる連番のファイル名を任意の数字から始まる連番のファイル名に変換する方法 こんにちは。小熊塁と申します。 タイトルにある通り、1から始まる連番のファイル名を任意の数字から始まる連番のファイル名に変換したいと考えております。 かつて他の質問にてcsvデータから画像を生成する方法を教えて頂いたのですが、その際にファイル名が1.png 2.png...のようになり、csvごとにそのように生成されました。 それぞれのcsvの画像データを一つのフォルダにまとめて格納したいのですが、同様のファイル名であるため一つ一つのファイル名を変更する必要があります。 しかし、画像データは10000枚以上に及ぶため煩わしいと考えました。 そこでタイトルのような事がmatlab上で出来ないかと思い、[ https://jp.mathworks.com/matlabcentral/answers/804971- ]この質問を参考にスクリプトを試したのですが、勉強不足で恐縮なのですが、どの箇所を変更すれば思い通りに動作するのか分かりませんでした。 この件に関して、アドバイス等ご教授いただければ幸いです。 よろしくお願いします。
回答: 会社だと機密の関係でインストールできないケースがあると思いますので、一応書いておきます (ちなみに自分は無断で窓の社でインストールすると会社の人に怒られます) 可能であれば@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