- 締切済み
ファイル名を連番に変える方法
下記のようなファイルを、上から連番をつけるにはどうしたら良いでしょうか。 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
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
>for k = 1:100 >myfilename = sprintf('%d',k) >と表記すると思いますが、 書式を「%03d」とすると「001」「002」のようになります。 因みに、書式を「%3d」とすると「<スペース><スペース>1」「<スペース><スペース>2」のように、必ず3文字の文字列が作られます。 蛇足ですが、DOSのバッチファイルでは、%03dのような書式付変換は出来ないので「1000001のように7桁の大きな数字を作って、末尾の6桁の000001を切り出す」と言う方法を使っています。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
追記。 いきなり実行したりしないで、最初にバッチファイルのリネームコマンドを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行目に足して下さい。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
------ここから 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桁」で、拡張子無しにリネームします。 フォルダの中のファイル「すべて」がリネーム対象になるので注意して下さい。「すべて」が対象なのでリネームしてはいけない物までリネームしてしまいます。
お礼
ありがとうございました。
- neKo_quatre
- ベストアンサー率44% (735/1637)
そういう用途用のソフトを利用するのが良いです。 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 ・更新日をクリックして順番を並べ替え ・「全て選択」をクリック ・「試行」で変更後のファイル名が期待通りになるか確認 ・「実行」をクリック とか。
お礼
出来ました。ありがとうございました。
補足
ご解答ありがとうございました。 もう一つ質問ですが、 ファイル名を生成する時、 ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、 for k = 1:100 myfilename = sprintf('%d',k) と表記すると思いますが、 ファイル名が、001,002,003,004,005,・・・・100 の場合、 sprintfの'%d'の部分はどう表記すればよいでしょうか。
お礼
ご丁寧にありがとうございます。
補足
ファイル名を生成する時、 ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、 for k = 1:100 myfilename = sprintf('%d',k) と表記すると思いますが、 ファイル名が、001,002,003,004,005,・・・・100 の場合、 sprintfの'%d'の部分はどう表記すればよいでしょうか。