Windows PowerShellでファイル名変更

このQ&Aのポイント
  • Windows PowerShellを使用して、ファイル名の変更を行う方法について教えてください。
  • 以下のようなファイル名の置換を行いたい場合、Windows PowerShellのコマンドを使用して実現することができます。
  • 置換前のファイル名には日付時間と番組種が含まれており、置換後のファイル名は指定したテキストに置換されます。Windows PowerShellを使って効率的にこの作業を行う方法を教えてください。
回答を見る
  • ベストアンサー

Windows PowerShell ファイル名変

Windows PowerShell で以下のようなファイル名変更を行いたいのですが、 可能でしょうか? 元ファイル名  201710131111_TEST1_ドラマ.mp4  201710142222_TEST1_バラエティ.mp4  201710152323_TEST1_報道.mp4 置換後ファイル名  201710131111_TEST2.mp4  201710142222_TEST2.mp4  201710152323_TEST2.mp4 置換前ファイル名の日付時間と番組種はどんな文字列になるかは不明という前提で、 Windows PowerShell などのコマンドで動く物で実現したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1875/4423)
回答No.2

次のようにすればいいです。 powershell だと とてもシンプルな記述になります。 パイプ処理で続けていますので 記述は1行です。(途中に改行はありません) x:\folder の部分は自分の環境にあわせてください。 x はドライブレター、folder はファイルのあるフォルダpathです。 1つ目のパイプ処理で対象ファイルを抽出しています。 2つ目のパイプ処理でファイル名を変更(置き換え)しています。 --- get-childitem x:\folder | where{[string]($_.name).substring(13,5) -eq "TEST1"} | rename-item -newname {$_.name.substring(0,18) + $_.extension -replace "TEST1","TEST2"} --- ファイル名にTEST1という文字列があるファイルだけを対象にしますので、 例えば元ファイルに 201710163434_TEST3_音楽.mp4 というファイルがある場合は、何も変更されません。

QWB03564
質問者

お礼

kteds様 回答ありがとうございます。 すごいです。そのままコピペしたら出来ました。

その他の回答 (1)

  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.1

こんにちは。 rename ????????????_?????_*.mp4 ????????????_?????.mp4 ですかね?

QWB03564
質問者

補足

回答ありがとうございます。 TEST3やTEST4,TEST5などは変更対象にしたくないのですが、 可能でしょうか?またTEST1の部分は任意の文字列を指定したいです。

関連するQ&A

  • powershellでの改行方法について

    テキストファイルの特定の文字列の後の改行コードをカンマに変換するbatファイルを作成しようと思っているのですがうまくいきません。 DOSで用意されているコマンドだけでは実現は難しいと思って、powershellコマンドを使っています。 実現は一つのbatファイルで行いたいのですが、どなたか実現方法を知っていましたら教えていただけませんでしょうか。 [JIKKO.bat] powershell.exe "$(Get-Content TEST.txt) -replace '★`n',','" >TEST_RESULT.txt [TEST.txt] あああ,いいい,ううう★ えええ かかか,ききき,くくく★ けけけ [TEST_RESULT.txtの理想] あああ,いいい,ううう,えええ かかか,ききき,くくく,けけけ

  • PowerShellからPowerShellを呼び出す方法

    PowerShellからPowerShellを呼び出す方法 次のバッチファイルと同等の事をPowerShellで行う方法を教えて下さい。 下記のような非常に簡易的なバッチファイルがあるとします。 ■ aaa.bat ■ echo test ■ aaa.bat ■ ■ bbb.bat ■ aaa.bat > aaa.log ■ bbb.bat ■ ■ コマンドプロンプト ■ cmd> aaa.bat ・・・ 下に「test」と出力される test cmd> bbb.bat ・・・ ファイルaaa.logに「test」と出力される ■ コマンドプロンプト ■ 同じ事をPowerShellでするとすれば ■ aaa.ps1 ■ echo "test" ■ aaa.ps1 ■ ■ PowerShellの画面から ■ PS > ./aaa.ps1 ・・・ 下に「test」と出力される test PS > ./bbb.ps1 ・・・ ファイルaaa.logに「test」と出力される ■ PowerShellの画面から ■ この時の「bbb.ps1」はどのようになりますか?

  • Powershell で []付ファイル名を変更する方法

    PowerShell で []付のファイル名を変更しようとしているのですが、 ワイルドカードのエスケープの仕様がよくわからず困っています。 以下のTest-Pathを使ったコマンドはすべて True でしたが Rename-Item (ren) では"オブジェクトは存在しませんという"エラーが出ます。うまくリネームする方法はないでしょうか? ファイル名 [].txt test-path '`[`].txt' →TRUE test-path '``[].txt' →TRUE test-path '[[]].txt' →TRUE ren '`[`].txt' 'a' →エラー ren '``[].txt' 'a' →エラー ren '[[]].txt' 'a' →エラー

  • windows powershell

    windows powershell は動作を停止しました パソコンをはじめて直後に上記のメッセージがあらわれます。メッセージを消してそのまま作業を続けても問題はおこらないのですが、気になりネットで対策を調べて、まず行ったのがコマンドを管理者権限で起動してsfc /scannowと打ち込みシステムファイルのエラーチェックを行いましたがエラーはありませんでした。その次に管理ツールwindows powershell Modulelを起動して Set-ExecutionPolicy RemoteSignedというコマンドを実行して実行ポリシーを変更しようとすると[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"):とでてくるので、Yを入れるのですが何もおきません。結局不具合のままです。ちなみに今のパソコンはログインユーザーアカウントが2つあり、1つは問題なく動作しています。

  • powershellの使い方について

    windows7 64bit環境ではじめて、powershellを使うものです。 下記動作をさせたい場合、どうすればよいのかを教えてください。 c直下にある"test"ファイルを同階層に名前を変更してコピーしたい場合。 copyやrobocopyなどを利用するのでしょうが、コピーするファイル名がすでに存在するため、当然怒られます。 素人質問で申し訳ございませんがよろしくお願いいたします。

  • 簡単なPowerShell

    Windows10のPowerShellで、ディレクトリを作りたいのですが、本日の日付の翌日の日付をyyyymmdd の形式で表した名前のフォルダを作りたいです。 例えば、本日が2022年5月25日であれば、c:\xxx\に、20220526 というフォルダを自動生成したいです。 最終的には、Windowsキー+R キーでファイル名を指定して実行から これが起動できればOKなのですが、何かスクリプトのようなものを作らなければなりませんか?(PowerShellド素人です) (Get-Date).AddDays(+1).ToString("yyyyMMdd") で翌日のyyyymmddを 取り出せることはわかったのですが、それを使って c:\xxxにフォルダはどう作るのかすらわかっていません。 mkdir c:\xxx\(Get-Date).AddDays(+1).ToString("yyyyMMdd") はやっても無駄でした。文法がわからず困ってます。

  • コマンドプロンプトにてPowerShell実行

    Windows10のアップデート後にWindowsが起動できなくなり、青い画面の 「システムの復元」を実行しようとすると「このドライブでシステムの保護を 有効にする必要があります」となります。 色々ネットで調べて、コマンドプロンプトよりPowerShellにて有効にできる とのことだったのですが、実行すると「'PowerShell'は内部コマンドまたは 外部コマンド、操作可能なプログラムまたはバッチファイルとして認識 されていません」となります。 コマンドプロンプトの画面の左上には「管理者」となっています。 しかし、コマンドプロンプト画面になったときに「このコマンドを処理する にはメモリリソースが足りません」となりました。 なぜPowerShellが実行できないのでしょうか? 実行する方法をご教授下さい。 よろしくお願い致します。

  • powershellでフォルダ情報を取得したい

    ■前提・実現したいこと powershellで、カレントフォルダ配下にある多数のフォルダに対し、 フォルダ名、最終更新日時、フォルダ内のjpgファイルの個数、フォルダ内のpngファイルの個数 をカンマ区切りのcsv形式でファイルに保存したいです。 ■試したこと 以下のコマンドで、ファイル名、最終更新日は取得することができました。 Get-ChildItem | Sort-Object Name | Select-Object Name, LastWriteTime | convertTo-csv -delimiter "`t" | Select -Skip 2 | Out-File ../out.txt -encoding Default 1つずつのフォルダに対して以下のコマンドでjpgファイルの個数が取得できるようです。 (Get-ChildItem . | Where-Object { $_.Extension -eq ".jpg" }).Count 最初のコマンドにうまく合わせることで、1コマンドで取得できるようにしたいのですが、 どうすればよいのか分からず、教えていただけないでしょうか。

  • コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい

    コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい BAT実行や、BATにドロップする程度の操作でファイル名置換したいと思っています。 たとえば、「abcTEST123.txt」というファイルを下記のバッチにドロップすると、 「abctest123.txt」と言うファイル名に置換されます。 for %%A in (*TEST*.txt) do call :sub %%A :sub set A=%1 ren %A% %A:TEST=test% しかし「TEST」をスペースにしてもファイル名の置換はできません。 コマンドプロンプトではスペースは扱えないのでしょうか。 解決策がありましたらご教授願います。

  • Powershellで複数のcsvファイルを一つに

    powershellの初心者です。 PowerShellで複数のcsvファイルを一つにする必要にせまり ネット情報を探して以下がヒットしましたが 初心者なのこの情報をどう利用して良いのかが判りません。 以下の具体例でコード(Join.ps1)を教えてください。 以下の3つのファイルを C:\Users\TAC_\Desktop\Test\Drive1.csv C:\Users\TAC_\Desktop\Test\Drive2.csv C:\Users\TAC_\Desktop\Test\Drive3.csv 以下のファイル名に保存(まとめる) C:\Users\TAC_\Desktop\Test\Join.csv C:\Users\TAC_\Desktop\Test\Join.ps1を起動させると 該当する3つのCSVファイルを結合したJoin.csvを作成する