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

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

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

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

874閲覧

powershell で ファイル名の特定の文字列の左側すべてを削除する方法

dame-dame

総合スコア78

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/01/04 11:19

前提

powershellを使います。
とあるフォルダ内で、たくさんファイルがあり、そのファイル名の中には必ず
aaa という文字列があるとします

実現したいこと

そのaaa文字列を含む左側をすべて削除するということはできますでしょうか?

例えば、

letsgo_japan_aaa11121212221.txt 1etsgo_japan_aaa11121212221212121231231231231231.mp3

というようにファイルの拡張子はtxt であるとは限らないとします。

そこから、ファイル名を

11121212221.txt 11121212221212121231231231231231.mp3

というようにして、aaaを含む文字をまるまる削除したいのです。

試したこと

ls | Rename-Item からの操作方法が思いつかないのです。。。

なにかいい方法はありますでしょうか?

よろしくおねがいいたします

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

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

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

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

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

guest

回答2

0

■ファイル名の特定の文字列の左側すべてを削除

※短縮せずに書いてみる事をお勧めします

※Cドライブにtestフォルダを作成して、ファイルを入れてください。

PowerShell

1 2Get-ChildItem -LiteralPath "C:\test" | Where-Object {-not $_.PSIsContainer} | Rename-Item -newName {$_.Name -replace "^.*aaa",""}

投稿2023/01/05 06:35

ccc-

総合スコア356

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

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

dame-dame

2023/01/08 08:16

ありがとうございます。試してみましたが、エラーが出てしまいます。 ここからは、私が自力で何とかしなくては、ならないかと思います。 何とか粘って、頑張ります ありがとうございました
guest

0

ベストアンサー

-replaceを使って、以下のような流れで置換するのはどうでしょうか。

PowerShell

1> ls 21etsgo_japan_aaa11121212221212121231231231231231.mp3 letsgo_japan_aaa11121212221.txt 3 4> ls | Rename-Item -NewName {$_ -replace "^.*aaa", ""} 5 6> ls 711121212221.txt 11121212221212121231231231231231.mp3

投稿2023/01/04 11:53

knuser

総合スコア178

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

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

dame-dame

2023/01/04 23:30

ありがとうございます でも、それをやると Rename-Item : 既に存在するファイルを作成することはできません。 発生場所 行:1 文字:6 + ls | Rename-Item -NewName {$_ -replace "^.*aaa", ""} -Force + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (C:\Users\wa\...Squatmmax10.mp4:String) [Rename-Item], IOException + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand という感じになってしまうんです。-Force オプションを指定しても同じです 私のやり方が間違っているのでしょうか? ご教示いただければと
knuser

2023/01/08 09:03 編集

既に存在するファイルと同名になる場合はエラーになると思います。 例えば、「11121212221.txt」が既に存在している状態で、「 letsgo_japan_aaa11121212221.txt」に対して、Rename-Itemを実行した場合に発生しているエラーなのかなと思います。 この場合、どういう風に振る舞うのが期待値でしょうか? (「11121212221.txt」を事前に削除するアプローチは取れるでしょうか?あるいは、別名にすべきなのであれば、置換の条件・ルールを見直す必要もあるのかもしれません)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問