Windows 8.1 で複数のファイルのファイル名の一部を削除するにはどうすればよいですか?

Windows 8.1 で複数のファイルのファイル名の一部を削除するにはどうすればよいですか?

フォルダ内にたくさんのファイルがあるのですが、それらはすべて数字の行で始まり、実際のファイル名とは「_」で区切られています。

例えば:

123123123_ファイル名.txt

456456456_ファイル名2.txt

789789789_ファイル名3.txt

「_」の前の文字と「_」自体を削除するような何らかのコマンドを実行できると思います。

どのような助けでも大歓迎です!

答え1

PowerShell に慣れていない場合は、次のような無料ユーティリティを検討してみてください。 http://www.bulkrenameutility.co.uk/Download.php

答え2

リストの文字を削除したいだけの場合は、次のコードをバッチファイルに記述し、該当するディレクトリをdirname

for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G

dir /b、ヘッダー情報や概要のない、シンプルな形式のディレクトリ リストを生成します。 はdelims=_、アンダースコアを区切り文字として使用することを示し、 は、tokens=2アンダースコアの後に続くものが必要であることを示します。賛成/反対FOR /Fバッチファイルでの使用方法の詳しい説明については、こちらをご覧ください。

しかし、数字とアンダースコアを除いたファイル名に変更したい場合、この例では、filename2.txt数字とアンダースコアを取り除いた名前になるファイルが 2 つあります。その場合、どうすればよいですか? それとも、3 番目のファイルには filename3.txt を使用するつもりでしたか?

アンダースコアの後に続くのが一意の名前である場合、適切なディレクトリに置き換えて、次のようにファイル名を変更できます。関連ディレクトリ:

set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H

上記の場合、最初のトークン%%Gはアンダースコアの前にあり、2 番目のトークン は%%Hアンダースコアの後にあります。名前変更コマンドは構文 を使用するため、名前変更操作のためにこれらをまとめ、ディレクトリをその前に付けましたRENAME [drive:][path]filename1 filename2

名前変更操作が発生するたびにそれを表示したくない場合は、@echo offバッチ ファイル内のコマンドの前の最初の行にを配置します。set

答え3

powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

Win8 では PowerShell が推奨されます。

答え4

PowerShell: フォルダー内のすべてのファイルの名前を変更する必要があると仮定します (OP が示唆しているように):

$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }

関連情報