質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

2回答

1802閲覧

コマンドプロンプトで新規ファイルに連番を振る方法

AGadget

総合スコア60

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2019/03/29 22:08

コマンドプロンプトでファイルを新しく作成し、かつ新規作成されたファイル名に連番を振る方法を探しています。

例えば、カレントディレクトリに「foo1.txt」「foo2.txt」があるときは「foo3.txt」が、
カレントディレクトリに何もファイルが無いときは「foo1.txt」が作成されるようにしたいのです。

エラーで動かないのを承知の上で、下記に現在までに考え付いた限りのコードを載せさせて頂きます。

ご回答のほど、よろしくお願い申し上げます。

@echo off cd %~dp0 set /a length=0 for %%i in (dir /b | find /c ".txt") do ( set /a length=length+1 ) echo Hello world. > foo%length%.txt exit /b

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

BAT

1set i=0 2:loop 3set /a i=i+1 4if exist foo%i%.txt goto loop 5 6echo uniuni > foo%i%.txt

ちょっとつくってみた

投稿2019/03/30 00:03

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGadget

2019/03/30 01:36

ご回答ありがとうございます。 動きました! 考えていた通りの動きです! 早速これを基にしてバッチ処理作成を進めていこうと思います。 ご回答ありがとうございました!
guest

0

考え方としてはいいような気がしますが、ファイルの数が増えていったら、処理に時間がかかっちゃいますよね。
(連番で管理しようとしているファイルを全舐めして、通番をどこまで振ったか見てるので)

私だったら、通番を管理するファイルを用意しておいて、そこで管理するようにするかな。
(ファイル作成時に参照して通番を採番してから、通番をインクリメントするとか)

2019/3/20 追記
BA出てますが、「PowerShellならもっと簡単になるんじゃね」と思ったので、書いてみました。
バッチファイルじゃないですが、PowerShellスクリプトなら

PowerShell

1$newcnt = @(dir foo*.txt).Count + 1 2echo 'Hello World' > foo$newcnt.txt

でいけたりします。
(最初の1行でFOR文の中身を賄ってます)

投稿2019/03/29 23:18

編集2019/03/30 02:59
archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGadget

2019/03/30 01:32

ご回答ありがとうございます。 やはり全舐めして見ていくと段々重たくなってしまいますか……。 この処理は1日1回動かしていく予定ですので限界が来るのは結構早いかもしれません。 私はコマンドプロンプトの扱いが全然駄目なので、ご提案頂いた案の実現は当分先になるかと思いますが、できるだけ軽くする方向でも考えていこうと思います。 ご回答ありがとうございました!
archiver

2019/03/30 03:02

懸念としてはありますけど、ファイルの中身を見てるわけではないので、よっぽどの数にならないと影響としては出ないかなとは思います。 多分Windows環境とは思いますが、PowerShellが使える環境ならば、PowerShellの使用も考えてみてもいいかと思います。コマンドプロンプト(バッチ)より強力ですよ。
archiver

2019/03/30 03:48

五月雨に書いてすいません。 後は、運用にも依りますね。例えば、ファイルが溜まって、整理(削除、移動、圧縮等)する際、若番の方(多分、運用的にも古いファイル)を整理したとすると、今のやり方だと、整理後の通番がおかしくなると思います(単純にファイルの数+1の番号を振っているので。)。全ファイルを整理してからなら問題はないですけどね。 もし、先々バッチの改良をするならば、そういった事も考慮した方がいいと思います。
AGadget

2019/03/30 12:15

ありがとうございます。 最初はPowerShellで作ろうとしたのですが許可が下りなかったので泣く泣く……。 とりあえず最低限動作することは前提に、ファイルの連番管理や動作が重くならないかのチェック機能なども可能な追加してみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問