たとえばフォルダの中にfirst.txt second.txt third.txtがあって、
これを11.txt 12.txt 13.txtの順の連番でバッチファイルで
リネームされるようにするにはどうすればよいのでしょうか?
(forth.txtがあれば14.txtになります。ForとRen等使用で可能?)

ご存知の方がおられましたらご回答をよろしくお願いします。

A 回答 (1件)

set N=10


for %%F in (first second third forth fifth sixth seventh eighth nineth) do call :ren %%F
goto :EOF
:ren
set /a N+=1
if exist %1.txt ren %1.txt %N%.txt
goto :EOF
    • good
    • 2
この回答へのお礼

早速やってみたところ問題を解決することができました。
ご回答していただきどうもありがとうございました。

お礼日時:2008/06/03 18:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qファイル名の一部を変更するバッチファイル

フォルダ内にある複数ファイルを、バッチファイルで一括ファイル名変更をしようとしています。
元ファイル名は、
23_ABCA_K.txt
23_ABCL_K.txt
23_ABCL_E.txt
23_ABCA_K.txt というように、頭2桁(日付)は共通で4ファイルあります。

これを、頭2桁を維持して、アルファベットのところを変更したいのです。
23_ABCA_K.txt→23_件数表.txt
23_ABCL_K.txt→23_集計表.txt
23_ABCL_E.txt→23_エラー数.txt
23_ABCA_K.txt→23_合否.txt という具合です。

rename 23_ABCA_K.txt 23_件数表.txt
とすると、頭2桁が変化したときに対応できないし、

%date: などでシステム日付を取得すると、
23_ABCA_k.txtを24日に改名すると、23が保持されず24になってしまう・・・

現状のファイル名の一部を取得して、改名後のファイル名につける
ということはできるのでしょうか?

よろしくお願いします。

フォルダ内にある複数ファイルを、バッチファイルで一括ファイル名変更をしようとしています。
元ファイル名は、
23_ABCA_K.txt
23_ABCL_K.txt
23_ABCL_E.txt
23_ABCA_K.txt というように、頭2桁(日付)は共通で4ファイルあります。

これを、頭2桁を維持して、アルファベットのところを変更したいのです。
23_ABCA_K.txt→23_件数表.txt
23_ABCL_K.txt→23_集計表.txt
23_ABCL_E.txt→23_エラー数.txt
23_ABCA_K.txt→23_合否.txt という具合です。

rename 23_ABCA_K.txt 23_件数表.txt
...続きを読む

Aベストアンサー

日付の部分を?に

ren ??_ABCA_K.txt ??_件数表.txt

ワイルドカードの?は1文字何でも良いとなりますので
23日と24日があれば両方変更されます
それと、件数表と合否のファイル名が同じですよ

Q[DOS] コピー先に同じファイル名がある場合、名前を変えて...

Win2000のDOS窓にて、xxx.batファイルを使用して
大量のファイルのコピーをしようとしています。

その時、コピー先に同じファイル名が存在する場合
があります。その時、(xxx.batファイルの内容を変える
こと無く)自動的に
ファイル名001
ファイル名002
:
と名前を変えて保存してくれるような「copyコマンド」
知りませんか?

以上、宜しくお願い致します。

Aベストアンサー

残念ながらそのようなコマンドはありません。
で、バッチを作ってみました。
よかったら使ってみてください。

ファイル名.xxx
ファイル名001.xxx
ファイル名002.xxx
と変わっていきます。
(最初のファイルはそのままです)

@echo off

set orgFile=%~f1
set newFile=%~f2
set newFile1=%~dpn2
set newFile2=%~x2
set Count=0

:loop
if not exist %newFile% goto loop_end
set /a Count=%Count%+1
set Count=000%Count%
set Count=%Count:~-3%
set newFile=%newFile1%%Count%%newFile2%
goto loop
:loop_end

copy %orgFile% %newFile%

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

Q同じファイルを連番などでひたすらたくさんコピーするソフト

テキストファイルや画像ファイルなどに連番などを付けながら、同じフォルダ上にひたすらたくさん(少なくとも100個以上。下手をすれば千個単位)コピーするソフトを探しています。時間をかければ手動でも出来ますが、いくら何でも単調すぎる作業です。
ウィンドウズXPで動作するフリーソフトで、そういう物はないでしょうか。

Aベストアンサー

メモ帳に次のように入力し、拡張子 .BAT で保存してから
ダブルクリックで実行します。

COPY C:\MyFiles\AAAA.jpg C:\MyFiles\0001.jpg
COPY C:\MyFiles\AAAA.jpg C:\MyFiles\0002.jpg
COPY C:\MyFiles\AAAA.jpg C:\MyFiles\0003.jpg
   ……
COPY C:\MyFiles\AAAA.jpg C:\MyFiles\0999.jpg
COPY C:\MyFiles\AAAA.jpg C:\MyFiles\1000.jpg


ExcelのA1に

COPY C:\MyFiles\AAAA.jpg C:\MyFiles\0001.jpg

と1行入力し下方に好きなだけドラッグコピーすれば連番に
なりますので、それをメモ帳にコピーすると早いでしょう。

Qフォルダ名に番号を連番でつけたい

バッチファイルでフォルダを作る際に、
「今日の日付+連番」でフォルダを作成するバッチを
作りたいと考えています。
例えば、
20090911-01_○○○○
20090911-02_△△△△
20090911-03_□□□□
というフォルダがあった時、「20090911-04」
というフォルダが作成されるような動きで、
次にバッチを動かした場合には「20090911-05」というフォルダが
作成されるように、
「今日の日付+番号」の番号を+1ずつ足していくには
どのように記述すればいいでしょうか。
ご存知の方がいましたら、教えてください。
よろしくお願いします。

OS:Windows2000、XP

Aベストアンサー

VBScriptの例

Option Explicit
'コマンドラインパラメータをチェック
If WScript.Arguments.Count = 0 Then 'パラメータ無しの場合
MsgBox "親フォルダ名を指定してください", _
      vbCritical, "エラー"
WScript.Quit 1 '終了コード=1
End If
'変数の宣言
Dim FSO, FLD, OBJ, FNM, REG, TDY, MXN, TMP, TGF
'コマンドラインパラメータの1番目を取得
TGF = WScript.Arguments(0)
'本日のYYYMMDDの編集
TDY = CStr(Year(Now) * 10000 + Month(Now) * 100 + Day(Now))
'正規表現オブジェクト
Set REG = New RegExp
REG.Global = True
REG.Pattern = "^" & TDY & "_\d{2}" 'フォルダ名のパターン
'ファイル/フォルダ操作用のオブジェクト
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FLD = FSO.GetFolder(TGF)
MXN = 0 '連番最小値
For Each OBJ In FLD.SubFolders 'サブフォルダを順に処理
  FNM = OBJ.Name 'フォルダ名を取得
  If REG.Test(FNM) Then 'パターンに一致した場合
    TMP = CLng(Mid(FNM, 10, 2)) 'YYYYMMDD_NN のNNを数値化
    If TMP > MXN Then MXN = TMP '現在までの最大値なら記録
  End If
Next
'最大値+1でフォルダを作成
TMP = CStr(MXN + 1)
If Len(TMP) < 2 Then TMP = "0" & TMP
If Right(TGF, 1) <> "\" Then TGF = TGF & "\"
FSO.CreateFolder TGF & TDY & "_" & TMP
WScript.Quit 0 '終了コード=0

上記を適当なエディタにコピペし、漢字全角を半角空白に変更します。
これは字下げに漢字空白を使っているためです。次に拡張子を.VBSで
保存(名前は任意)します。あとはコマンドラインから以下のように
打ち込めば実行します。
xxx.vbs C:\~

尚、親フォルダを受け取るのにBrowseForFolder(フォルダを選択する
ダイアログ)を使う方法もあります。ちょっと、バッチっぽくないか…

VBScriptの例

Option Explicit
'コマンドラインパラメータをチェック
If WScript.Arguments.Count = 0 Then 'パラメータ無しの場合
MsgBox "親フォルダ名を指定してください", _
      vbCritical, "エラー"
WScript.Quit 1 '終了コード=1
End If
'変数の宣言
Dim FSO, FLD, OBJ, FNM, REG, TDY, MXN, TMP, TGF
'コマンドラインパラメータの1番目を取得
TGF = WScript.Arguments(0)
'本日のYYYMMDDの編集
TDY = CStr(Year(Now) * 10000 + Month(Now) * 100 + Day(Now))
'正規表現...続きを読む

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qバッチファイルにて連番付きフォルダの作成

今、このようにして、日付のフォルダを作って、画像を整理しています。
今日でしたら、121128というフォルダが出来ます。

set ymdtmp=%DATE:/=%
set yyyymmdd=%ymdtmp:~2%
cd /d E:\AA"\BB
md %yyyymmdd%

move e:\AA"\*.jpg E:\AA"\BB\%yyyymmdd%\

これを121128_0というフォルダを作るようにしたいのです。
そして、今日、もう一度実行すると、既に、121128_0があれば、121128_1というフォルダを作るようにするには、どうすればよいのか教えてください。

その後、実行する毎に、
121128_2
121128_3
というように、最後が連番になるようにしたいのです。

Aベストアンサー

こんな感じで、

set ymdtmp=%DATE:/=%
set yyyymmdd=%ymdtmp:~2%
cd /d E:\AA"\BB

set n=0
:LOOP
IF EXIST %yyyymmdd%_%n% (
set /a n=n+1
goto LOOP
)

md %yyyymmdd%_%n%

move e:\AA"\*.jpg E:\AA"\BB\%yyyymmdd%_%n%\

Q特定のフォルダ内のある種類のファイルをすべてコピーし格納する方法

WINDOWSマシン使用。
あるフォルダ(AAA)の中に、複数のフォルダやファイルを含み、またそのフォルダは、
は、下位のフォルダやファイルを含むという関係が続きます。階層は4くらい。
この中の各所にあるフォルダにはwordのファイルやその他のファイルを含んで
います。
このwordのファイルだけをすべて選択しコピーして、別のフォルダ(BETU)へ
入れたい。
簡単に行なう方法、あるいはツールなどあれば紹介をお願いします。

Aベストアンサー

はじめまして。

コマンドプロンプトで
for /f "tokens=*" %i in ('dir /b /s AAA\*.doc') do copy "%i" "BETU"
を実行すれば4階層以上深くても可能です。

※"%i" "BETU"と"でくくるのは、ディレクトリ名に空白がある場合エラーとなるのを防ぐためです。

AAAもBETUもフルパスで記述すればコマンド実行ディレクトリは何処でも構いません。

Qバッチファイルで2つ以上の変数を連結し、1つの変数にしたい。

Windows2000でバッチファイルを作っています。
バッチファイルが受け取る2つのパラメータを %1 %2とすると、
それを連結して、新たな変数 A を作りたいのですが、どのようにすれば良いのでしょうか。

Aベストアンサー

SETで変数にパラメータをセットすればOKだと思います。

例)
SET A=%1%2
echo %A%

Q【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について

【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について

お世話になっております。

コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加えたいと考えています。

ファイル一括置換を行うフリーソフト(ファイル名変換君など)では、可能なのですが、
対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。

現在、同じフォルダに格納されているファイルに対しては、下記にて実行はできています。
for %i in (*.xls) do ren %i [LOCAL]%i

しかし、カレントフォルダの配下すべてのフォルダを対象にしたいため、下記のように変更すると、エラーとなってしまいます。
for /r %i in (*.xls) do ren %i [LOCAL]%i

おそらく・・・変数%iに、ファイルのフルパスが格納されてしまい、思い通りの動作になっていないと推測しています。

どのように作成すればよいか教えていただけませんでしょうか。

よろしくお願いいたします。

【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について

お世話になっております。

コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加えたいと考えています。

ファイル一括置換を行うフリーソフト(ファイル名変換君など)では、可能なのですが、
対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさ...続きを読む

Aベストアンサー

私の環境では、これでうまく行きました。

for /r %%i in (*.xls) do ren "%%i" "[LOCAL]%%~ni.xls"

参考URL:http://sgry.jp/pgarticles/batch.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報