バッチ名変更の自動化* _2。* TO *。*


1

_2から複数のファイルの名前を変更しています 「_2」サフィックスを削除したい

私の最初の回避策はしようとしています

   ren *_2.* *.*

しかし、これは機能しません。ヘルプが作成されます。


名前を変更する必要があるファイルの数について それらはすべて文字数の点で販売幅ですか?
ジム14

約1000個のファイルと異なる文字数を持っている
M. Abdelhafid 14

回答:


2

溶液

次のバッチスクリプトを使用できます。

@echo off
setlocal enabledelayedexpansion

for /r %%G in (*_2.*) do (
set new=%%~nG
set new=!new:~0,-2!
ren "%%~G" "!new!%%~xG"
)

使い方

  1. に一致するすべてのファイルを一覧表示します*_2.*
  2. 最後の2文字を削除して_2、各ファイル名(%%~nG)からサフィックスを削除します。
  3. 元の拡張子(%%~xG)を新しい名前に追加します。
  4. ファイルの名前を変更します。

テストケース

__2.bin --> _.bin
abc_def_2.txt --> abc_def.txt
2014_02_23_2.log --> 2014_02_23.log

参考文献


1

これを小さな.cmdとして試すことができます:

@echo off
setlocal enabledelayedexpansion

for %%a in (*_2.*) do (
set fnm=%%a
echo ren !fnm! !fnm:_2.=.!
)

これあなたが期待することをするようです(テスト実行で満足したらエコーを削除します)。

_2.ファイル名に複数がある場合、考えられる問題が表示されます

編集:提案に従って不完全な提案を置き換えました


部分文字列を置き換えると、望ましくない副作用が生じる可能性があります。というファイルがあるとしましょう2014_02_23_2.log。すべて_2を空の文字列に置き換えてすべて削除すると、というファイルが作成され2014_023.logます。本当にOPが望んでいたものではありません。
and31415 14

とにかく私は明らかにより良いバッチレットで「答えられた」ので、それを修正する必要がありますか?
FredP 14

答え自体は完全に間違っているわけではありませんが、もう少し詳しく説明し、警告を追加して、場合によっては動作するサンプルコードを提供することで改善する必要があります。
and31415 14

0

PowerShellでこれを行う方法は次のとおりです(1行なので、必ず右にスクロールしてください)。

gci PATH\TO\YOUR\FOLDER\ | ? {!$_.PSIsContainer -and $_.BaseName.EndsWith("_2")} | ren -NewName {("{0}{1}" -f $_.BaseName.Substring(0, $_.BaseName.Length-2), $_.Extension)}

gciはGet-ChildItemのエイリアスです-ここにフォルダーへのパスを入力します。サブフォルダーがある場合は、パスの後に-Recurseを追加します

は、Where-Objectのエイリアスです-ここでは、アイテムをループし、それがフォルダーではなく、その名前が「_2」で終わることを確認します(ファイル拡張子を除く)。

ren -Rename- Item-最後に、Where-Objectフィルターを通過したファイルの名前を変更します。Substringを使用して、ファイル名の最後の2文字を切り取ります。


0

これは、パターンが実際_2.*にあり_2*.*(数字2の後にない)、and31415として正しく指摘されているアンダースコアが1つだけであるという仮定の下でそれを行う必要があります- _拡張子から(アンダースコア) からすべてを削除するため

for %i in (*_2.*) do (@for /f "delims=_ tokens=1" %j in ("%~ni") do @echo ren "%i" "%j%~xi")

ご注意:
-それは、コマンドラインから直接実行すると、1行だ
-それは今だけエコー(プリント)をコンソールにRENコマンドを。正しく実行されることを確認したら、削除@echoして実際にファイルの名前を変更します。


ファイルが呼び出されるとしますabc_def_2.txt。次に、コードの名前をに変更しますがabc.txt、これは予期した結果ではありません。
および31415 14

@ and31415はい良いキャッチ-おかしい私は自分自身にこれに気づき、警告を追加しようとしていました:
wmz 14

0

JP SoftwareのTake Commandでそれを行うためのワンライナーはREN次のとおりです。そのコマンドは正規表現をサポートするコマンドインタープリターです。

ren ::(.*)_2\.(.*) ::\1.\2

参考文献

  • JPソフトウェア。REN。コマンド/ TCCヘルプを利用してください。

-1

本当に早くて汚い方法を知りません。

しかし、ベアディレクトリリストをTXTファイルにパイプする方法はどうでしょう。ファイルをスプレッドシートにロードし、式を作成して名前変更コマンドを作成します。次に、名前変更コマンドを値としてコピーし、それをバッチファイルに貼り付けて、名前変更を実行することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.