フォルダ内にたくさんのファイルがあるのですが、それらはすべて数字の行で始まり、実際のファイル名とは「_」で区切られています。
例えば:
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] }