みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

下記のようなファイルを、上から連番をつけるにはどうしたら良いでしょうか。
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

投稿日時 - 2017-07-27 14:07:37

QNo.9356437

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

>for k = 1:100
>myfilename = sprintf('%d',k)
>と表記すると思いますが、

書式を「%03d」とすると「001」「002」のようになります。

因みに、書式を「%3d」とすると「<スペース><スペース>1」「<スペース><スペース>2」のように、必ず3文字の文字列が作られます。

蛇足ですが、DOSのバッチファイルでは、%03dのような書式付変換は出来ないので「1000001のように7桁の大きな数字を作って、末尾の6桁の000001を切り出す」と言う方法を使っています。

投稿日時 - 2017-07-28 10:56:39

ANo.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行目に足して下さい。

投稿日時 - 2017-07-27 16:30:13

補足

ファイル名を生成する時、

ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、
for k = 1:100
myfilename = sprintf('%d',k)

と表記すると思いますが、

ファイル名が、001,002,003,004,005,・・・・100 の場合、
sprintfの'%d'の部分はどう表記すればよいでしょうか。

投稿日時 - 2017-07-27 16:52:13

お礼

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

投稿日時 - 2017-07-27 16:48:03

ANo.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桁」で、拡張子無しにリネームします。

フォルダの中のファイル「すべて」がリネーム対象になるので注意して下さい。「すべて」が対象なのでリネームしてはいけない物までリネームしてしまいます。

投稿日時 - 2017-07-27 16:22:39

お礼

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

投稿日時 - 2017-07-27 16:47:46

ANo.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
・更新日をクリックして順番を並べ替え
・「全て選択」をクリック
・「試行」で変更後のファイル名が期待通りになるか確認
・「実行」をクリック
とか。

投稿日時 - 2017-07-27 15:09:25

補足

ご解答ありがとうございました。
もう一つ質問ですが、

ファイル名を生成する時、

ファイル名が 1,2,3,4,5,6,7,・・・,100 の場合、
for k = 1:100
myfilename = sprintf('%d',k)

と表記すると思いますが、

ファイル名が、001,002,003,004,005,・・・・100 の場合、
sprintfの'%d'の部分はどう表記すればよいでしょうか。

投稿日時 - 2017-07-27 16:52:49

お礼

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

投稿日時 - 2017-07-27 16:46:49

あなたにオススメの質問