2016-11-02 19 views
-4

私は私が探している何多くのファイル名から何かを削除しますか?

Files_01(some text).png 
Files_02(some different text).png 
Files_03(some other text).png 
Files_04(totally different text).png

のような名前のファイルの多くは、私はと左てるように、括弧内のすべてを除去するための方法である持っている:

Files_01.png 
Files_02.png 
etc.

私が試しました以下が、それは括弧の中にテキストを削除しませんでした:

Get-ChildItem .png | foreach { 
    Rename-Item $_ $_.Name.Replace("()", "") 
} 
+0

あなたがこれまでにしようとしているものを投稿することができますか? –

+0

regex101.comの正規表現を見て回ったことがありますか? –

+2

ようこそスタックオーバーフロー!私たちは、プログラマーやプログラミング愛好家を支援するコミュニティです。それは、あなたが投稿した前にあなたがしたことや試したことを示すことが期待されています。これは私たちに何かを築くものです。現時点では、これはSOのトピックではないコードの書き込み要求のように読まれます。あなたの質問をその部分に分け、それらの問題の解決策を個別に検索してください。それでも問題が解決しない場合は、あなたの質問があなたの仕事を示すように[編集]して、あなたとコミュニティをより良く助けることができます。 – Matt

答えて

0

は次のように試してみてください:

@echo off 
set "$ext=.png" 

for /f "delims=" %%b in ('dir /b/a-d *%$ext%') do for /f "tokens=1 delims=()" %%c in ('echo %%b') do ren "%%~nb%$ext%" "%%~nc%$ext%" 
+0

これは機能しませんでした。ありがとうtho。 – Aarron

+0

@Squashman、タイプミスがあり、オープニングの引用符が置き換えられています... – aschipfl

+0

ファイル名に@Aarron Spaces。ファイル名を引用符で囲む必要があります。 "ren" %%〜nb%$ ext% "" %%〜nc%$ ext% "' – Squashman

4

これは私がタスクを完了した方法です。ディレクトリからファイルオブジェクトを読み込み、ファイル名に括弧が含まれているかどうかを確認します。名前の場合は、かっことその間のテキストを空の文字列で置き換えます。 Rename-Itemを呼び出して、カッコを付けずに新しいファイル名を渡します。

$myFolder = "C:\Users\Aarron\Pictures\" 

Foreach ($file in Get-Childitem $myFolder\*.png) 
{ 
    $ReName = $file.basename.split("(")[0] + $file.extension 
    Rename-Item $file.FullName $ReName 
} 

...と可能なバッチソリューション:私はおそらくこのような何かを作成したいPowerShellで

Get-ChildItem -Path C:\PowershellTest\ | % {if($_.Name -match '.*\(.*\).*') {Rename-Item -Path $_.FullName -NewName $($_.Name -replace '\(.*\)', '')}} 
0

@Echo Off 
Set "myFolder=C:\Users\Aarron\Pictures\" 
For %%A In ("%myFolder%\*.png") Do Call :Sub "%%~dpA" "%%~nA" "%%~xA" 
Exit/B 
:Sub 
Set "ReName=%~2" 
Set ReName=%ReName:(=&:% 
Ren "%~1%~2%~3" "%ReName%%~3" 
関連する問題