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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

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

Q&A

解決済

1回答

2491閲覧

batもしくはVBSでファイルの連番を除去する方法を教えてください

chrokurojp

総合スコア26

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

コマンドプロンプト

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

0グッド

0クリップ

投稿2016/01/14 15:30

編集2016/01/14 15:48

以下はとある記事で見かけたbatファイルで
指定のフォルダ以下のファイルすべてに
"[]"付きの連番をファイル先頭に
付与してくれるのですが、

逆に今度は付けた"[]"付きの連番を
削除するbatに改修したいと思っているですが
「正規表現」を使えばいいのかなとは
推測しているのですが、具体的に
どうしたらいいのかわからないので
教えてください。

修正前
[0001]pict_A.jpg
[0002]thum_D.jpg



[0111]thum_D99.jpg

修正後
pict_A.jpg
thum_D.jpg



thum_D99.jpg

bat

1@echo off 2setlocal enabledelayedexpansion 3 4pushd .. 5 6set rootDi=%cd% 7popd 8 9 10for /f "usebackq delims=" %%f in (`dir /b /a-d`) do ( 11 12set /a cnt+=1 13set use=0000!cnt! 14set use="["!use:~-4!"]" 15set fileName=%%f 16set newFileName=!use!!fileName! 17echo 対象 : !fileName! 18echo リネーム後 : !newFileName! 19ren "!fileName!" "!newFileName!" 20echo -------------------------- 21) 22 23) 24echo fin 25 26pause 27 28exit

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

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

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

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

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

Ken.sakanakana

2016/01/14 15:36

修正前のファイル名と、修正後のファイル名を記載頂くとより的確な回答がでると思います。連番を取るだけですとファイル名が重複してしまいそうです。 複数のファイルを一つに固めるだけなら、copy /b *sourcefile destfile で一つにまとめられます。
chrokurojp

2016/01/14 15:49

アドバイスありがとうございます。修正例を追記しました
guest

回答1

0

ベストアンサー

同じ感じで書くとこんなですね(括弧を1つ余計なので取りました)。
先頭に付加されているのが固定長なので、「7文字目以降を取る」というのも有りだと思います。

DOS

1@echo off 2setlocal enabledelayedexpansion 3 4pushd .. 5set rootDi=%cd% 6popd 7 8for /f "usebackq delims=" %%f in (`dir /b /a-d`) do ( 9 set fileName=%%f 10 set newFileName=!fileName:*]=! 11 echo 対象 : !fileName! 12 echo リネーム後 : !newFileName! 13 ren "!fileName!" "!newFileName!" 14 echo -------------------------- 15) 16echo fin 17pause 18exit

追記:拡張子BATの時は処理対象外にする。

DOS

1@echo off 2setlocal enabledelayedexpansion 3 4pushd .. 5set rootDi=%cd% 6popd 7 8for /f "usebackq delims=" %%f in (`dir /b /a-d`) do ( 9 if /i "%%~xf" neq ".BAT" ( 10 set fileName=%%f 11 set newFileName=!fileName:*]=! 12 echo 対象 : !fileName! 13 echo リネーム後 : !newFileName! 14 ren "!fileName!" "!newFileName!" 15 echo -------------------------- 16 ) 17) 18echo fin 19pause 20exit 21

投稿2016/01/14 15:49

編集2016/01/27 11:46
otn

総合スコア84555

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

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

chrokurojp

2016/01/14 15:59

ありがとございます。 実現できました!!! ついでに下記のような拡張子が「.bat」のファイルを 対象外とするにはどうしたらいいのか差し出がましいのですが 教えてくれませんか for /f "usebackq delims=" %%f in (`dir /b /a-d`) do ( の直後に if文でファイル名文字列に「bat」があれば スキップするみたいな流れまでしかイメージできていなくて どう書けばいいのかがわかりません 【SCRIPT】_rename_renban.bat
otn

2016/01/27 11:42

追記しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問