• 締切済み

ファイル名を連番に変える方法

下記のようなファイルを、上から連番をつけるにはどうしたら良いでしょうか。 1分後ごとの観測結果のファイルです。 名前             更新日時 302910.004462 2016/10/04 0:00 759432.014596 2016/10/04 0:01 438787.024784 2016/10/04 0:02 879873.034963 2016/10/04 0:03

みんなの回答

回答No.4

>for k = 1:100 >myfilename = sprintf('%d',k) >と表記すると思いますが、 書式を「%03d」とすると「001」「002」のようになります。 因みに、書式を「%3d」とすると「<スペース><スペース>1」「<スペース><スペース>2」のように、必ず3文字の文字列が作られます。 蛇足ですが、DOSのバッチファイルでは、%03dのような書式付変換は出来ないので「1000001のように7桁の大きな数字を作って、末尾の6桁の000001を切り出す」と言う方法を使っています。

回答No.3

追記。 いきなり実行したりしないで、最初にバッチファイルのリネームコマンドをechoコマンドに書き換えて、どういうリネームが行なわれるか確認してから、本番の実行に挑んで下さい。 最初は ren %%i !count:~-6! の行を echo ren %%i !count:~-6! にして、望んだリネームが行なわれるか試して下さい。 -----ここから @echo off cd %1 setlocal enabledelayedexpansion set count=1000001 for /f %%i in ('dir /o:d /b') do ( echo ren %%i !count:~-6! ←最初はechoコマンドで試す set /a count += 1 ) ----ここまで あと、最初の回答のバッチで、コピペミスで、1行目の @echo off が抜けてしまったので、1行目に足して下さい。

nknknknk222
質問者

お礼

ご丁寧にありがとうございます。

nknknknk222
質問者

補足

ファイル名を生成する時、 ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、 for k = 1:100 myfilename = sprintf('%d',k) と表記すると思いますが、 ファイル名が、001,002,003,004,005,・・・・100 の場合、 sprintfの'%d'の部分はどう表記すればよいでしょうか。

回答No.2

------ここから cd %1 setlocal enabledelayedexpansion set count=1000001 for /f %%i in ('dir /o:d /b') do ( ren %%i !count:~-6! set /a count += 1 ) ------ここまで 上記のバッチファイルを、適当な場所に「allren.bat」と言うファイル名で保存し、コマンドプロンプトで「データファイルのフォルダ位置を指定して実行」して下さい。 例えば、データがc:\data_folderにあるなら、コマンドプロンプトで allren c:\data_folder と実行します。 因みに、連番で「6桁」で、拡張子無しにリネームします。 フォルダの中のファイル「すべて」がリネーム対象になるので注意して下さい。「すべて」が対象なのでリネームしてはいけない物までリネームしてしまいます。

nknknknk222
質問者

お礼

ありがとうございました。

回答No.1

そういう用途用のソフトを利用するのが良いです。 Vector: トップ / ダウンロード / Windows10/8/7/Vista/XP/2000/NT / ユーティリティ / ファイル管理 / ファイル名変更 http://www.vector.co.jp/vpack/filearea/winnt/util/file/name/ 例えば、3番目の「ファイル名一括変更 4.20」なら、 ・ファイルをダウンロード、解凍、起動 ・対象のファイルをツールにドラッグ&ドロップ ・「お仕事」に「連番作成」を指定。  基準ファイル名:f  開始番号:1  桁数:3  増分:1  先頭に付加:off ・更新日をクリックして順番を並べ替え ・「全て選択」をクリック ・「試行」で変更後のファイル名が期待通りになるか確認 ・「実行」をクリック とか。

nknknknk222
質問者

お礼

出来ました。ありがとうございました。

nknknknk222
質問者

補足

ご解答ありがとうございました。 もう一つ質問ですが、 ファイル名を生成する時、 ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、 for k = 1:100 myfilename = sprintf('%d',k) と表記すると思いますが、 ファイル名が、001,002,003,004,005,・・・・100 の場合、 sprintfの'%d'の部分はどう表記すればよいでしょうか。

関連するQ&A

専門家に質問してみよう