LoginSignup
2
6

More than 5 years have passed since last update.

パワーシェルでファイルのリネームをする01

Last updated at Posted at 2018-10-11

とにかくパワーシェルでファイルのリネームがしたかった
今回は置換コマンドを利用したものとなっています

概要と説明

特定のファイル名を文字数の異なるファイル名にするために、ファイル名を置換する用のps1ファイルを作る

Windows PowerShellを使って複雑なパターンのファイル名変更を行う
上記のサイトでご紹介の
Get-ChildItem <対象ファイル> | Rename-Item -NewName { $_.Name -replace '旧文字列','新文字列' }
を参考にして、筆者にとって使いやすいようにしたもの

例えば以下のようなファイル構成とするとき


PS C:\user\xyz>Get-ChildItem -Name
12332.xyz
1233454.xyz
12335.xyz
123456.xyz
1236516.xyz
123log.log
example.sys
Rename.ps1

上記xyzフォルダ内の*.xyzファイルのみ名前を文字数の異なるファイル名に変えたい
※Move-Itemというコマンドレットもありますが、今回はreplaceを使っております

PowerShellコード

応用すれば容易にファイル名を規則的に変換できると思います

Rename.ps1
$extension="xyz"
#xyzファイル一覧のホスト出力
Write-Host $extension"ファイル一覧"
Get-ChildItem -Name *$extension

#before replacementを略してBr
$Br=Read-Host "変換前ファイル名を入力:"

#After replacementを略してAr
$Ar=Read-Host "変換後ファイル名を入力:"

#拡張子がxyzのファイルに対してファイル名を変換(正確には置換)
Get-ChildItem *$extension | rename-item -NewName { $_.name -replace $Br,$Ar }

#PowerShell ISEで実行したときの確認用のホスト出力
Write-Host "ファイル一覧(変換後)"
Get-ChildItem -Name

実行例:Rename.ps1をPowerShellで実行
xyzファイルと同じフォルダで実行

xyzファイル一覧
12332.xyz
1233454.xyz
12335.xyz
123456.xyz
1236516.xyz
変換前文字列を入力:: 123
変換後文字列を入力:: A
ファイル一覧(変換後)
123log.log
A32.xyz
A3454.xyz
A35.xyz
A456.xyz
A6516.xyz
example.sys
Rename.ps1

123*.xyzがA*.xyzに変換された
...正確には置換ですが

参考

初心者には助かります
文字列の入力を受け取る (PowerShell プログラミング)
再掲:Windows PowerShellを使って複雑なパターンのファイル名変更を行う

最後に

ホスト出力でも結果を確認したいので、コマンドプロンプトでいうpauseみたいなのはないのかね
ISEの通称はイスじゃなくてアイスなのね、イスでよくない?
というか今回はMove-Item使えばよかったのかも

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6