Windows PowershellでiTunesの全角と半角を統一する

iTunesで音楽ファイルを管理していると「全角と半角を統一したい」という気持ちになりませんか？自分はなります。なのでWindows PowershellでiTunesの曲の全角と半角を統一するようにしています。その方法を共有します。

参考は以下の記事
https://qiita.com/Fushihara/items/612594263f9bb7012ad6

この記事は曲情報を取得するコードですが、これをもとに曲名などを置換するコードを書きました。

```

# 変数

$iTunes = New-Object -Com "iTunes.Application"

$iTunesText = ""
$StartTime = Get-Date
$RoopCounter = 0

# タグ名
# $_.Name 曲名
# $_.Genre ジャンル
# $_.SampleRate サンプルレート
# $_.Size サイズ
# $_.Year 年度
# $_.Artwork アートワーク
# $_.Podcast ポッドキャスト
# $_.Album アルバム名
# $_.Artist アーティスト名
# $_.SortAlbum アルバム名（ソート）
# $_.SortArtist アーティスト名（ソート）
# $_.SortName 曲名（ソート）
# $_.Comment コメント

# 関数定義

# 全角文字を半角に変換
function replaceEmEn($iTunesText){

	if ($iTunesText -cne $null){
	
		$iTunesText = $iTunesText.Replace("Ａ" , "A_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｂ" , "B_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｃ" , "C_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｄ" , "D_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｅ" , "E_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｆ" , "F_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｇ" , "G_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｈ" , "H_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｉ" , "I_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｊ" , "J_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｋ" , "K_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｌ" , "L_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｍ" , "M_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｎ" , "N_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｏ" , "O_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｐ" , "P_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｑ" , "Q_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｒ" , "R_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｓ" , "S_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｔ" , "T_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｕ" , "U_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｖ" , "V_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｗ" , "W_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｘ" , "X_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｙ" , "Y_半角" ) 
		$iTunesText = $iTunesText.Replace("Ｚ" , "Z_半角" ) 
		$iTunesText = $iTunesText.Replace("ａ" , "a_半角" ) 
		$iTunesText = $iTunesText.Replace("ｂ" , "b_半角" ) 
		$iTunesText = $iTunesText.Replace("ｃ" , "c_半角" ) 
		$iTunesText = $iTunesText.Replace("ｄ" , "d_半角" ) 
		$iTunesText = $iTunesText.Replace("ｅ" , "e_半角" ) 
		$iTunesText = $iTunesText.Replace("ｆ" , "f_半角" ) 
		$iTunesText = $iTunesText.Replace("ｇ" , "g_半角" ) 
		$iTunesText = $iTunesText.Replace("ｈ" , "h_半角" ) 
		$iTunesText = $iTunesText.Replace("ｉ" , "i_半角" ) 
		$iTunesText = $iTunesText.Replace("ｊ" , "j_半角" ) 
		$iTunesText = $iTunesText.Replace("ｋ" , "k_半角" ) 
		$iTunesText = $iTunesText.Replace("ｌ" , "l_半角" ) 
		$iTunesText = $iTunesText.Replace("ｍ" , "m_半角" ) 
		$iTunesText = $iTunesText.Replace("ｎ" , "n_半角" ) 
		$iTunesText = $iTunesText.Replace("ｏ" , "o_半角" ) 
		$iTunesText = $iTunesText.Replace("ｐ" , "p_半角" ) 
		$iTunesText = $iTunesText.Replace("ｑ" , "q_半角" ) 
		$iTunesText = $iTunesText.Replace("ｒ" , "r_半角" ) 
		$iTunesText = $iTunesText.Replace("ｓ" , "s_半角" ) 
		$iTunesText = $iTunesText.Replace("ｔ" , "t_半角" ) 
		$iTunesText = $iTunesText.Replace("ｕ" , "u_半角" ) 
		$iTunesText = $iTunesText.Replace("ｖ" , "v_半角" ) 
		$iTunesText = $iTunesText.Replace("ｗ" , "w_半角" ) 
		$iTunesText = $iTunesText.Replace("ｘ" , "x_半角" ) 
		$iTunesText = $iTunesText.Replace("ｙ" , "y_半角" ) 
		$iTunesText = $iTunesText.Replace("ｚ" , "z_半角" ) 
		$iTunesText = $iTunesText.Replace("１" , "1_半角" ) 
		$iTunesText = $iTunesText.Replace("２" , "2_半角" ) 
		$iTunesText = $iTunesText.Replace("３" , "3_半角" ) 
		$iTunesText = $iTunesText.Replace("４" , "4_半角" ) 
		$iTunesText = $iTunesText.Replace("５" , "5_半角" ) 
		$iTunesText = $iTunesText.Replace("６" , "6_半角" ) 
		$iTunesText = $iTunesText.Replace("７" , "7_半角" ) 
		$iTunesText = $iTunesText.Replace("８" , "8_半角" ) 
		$iTunesText = $iTunesText.Replace("９" , "9_半角" ) 
		$iTunesText = $iTunesText.Replace("０" , "0_半角" ) 
		$iTunesText = $iTunesText.Replace("（" , "(_半角" ) 
		$iTunesText = $iTunesText.Replace("）" , ")_半角" ) 
		$iTunesText = $iTunesText.Replace("ー" , "-_半角" )  
		$iTunesText = $iTunesText.Replace("＋" , "+_半角" ) 
			
		$iTunesText = $iTunesText.Trim() 
			
	}
	
	return $iTunesText
			
}	

$iTunes.LibraryPlayList.Tracks | foreach{

	# 処理時間計測
	if ($RoopCounter%1000 -eq 0){
	
	$StopTime = Get-Date
	$RoopCounter
	Write-Host ($StopTime - $StartTime).TotalSeconds
	
	}
    
	$RoopCounter = $RoopCounter + 1
	
	# ジャンルがNewの場合※処理時間短縮のため、置換したい曲だけあらかじめジャンルをNewにしておく
	if ($_.Genre -eq "New"){
			
		# 曲名変換
		
		if ($_.Name -cne $null){
		
			$replaceName = replaceEmEn $_.Name
			
			if ($replaceName -cne $_.Name){
			
				Write-Host ('曲名変換_' + $_.Name + '→' + $replaceName)
				$_.Name = $replaceName
			
			}
			
			if ($_.SortName -cne $_.Name){
			
				$_.SortName = $_.Name
			
			}		
			
			# iTunesでは全角から半角に変換しても情報が保存されないので、一度別の曲名にして保存する	
			
			$replaceName = $replaceName.Replace("_半角" , "" )
			
			if ($replaceName -cne $_.Name){
			
				Write-Host ('曲名変換_' + $_.Name + '→' + $replaceName)
				$_.Name = $replaceName
				$_.SortName = $_.Name
			
			}
		
		}
		# アルバム名変換
		
		if ($_.Album -cne $null){
		
			$replaceAlbum = replaceEmEn $_.Album
			
			if ($replaceAlbum -cne $_.Album){
			
				Write-Host ('アルバム名変換_' + $_.Album + '→' + $replaceAlbum)
				$_.Album = $replaceAlbum
			
			}
			
			if ($_.SortAlbum -cne $_.Album){
			
				$_.SortAlbum = $_.Album
			
			}			
			
			$replaceAlbum = $replaceAlbum.Replace("_半角" , "" )
			
			if ($replaceAlbum -cne $_.Album){
			
				Write-Host ('曲名変換_' + $_.Album + '→' + $replaceAlbum)
				$_.Album = $replaceAlbum
				$_.SortAlbum = $_.Album
			
			}
		
		}
		
	}

}

$StopTime = Get-Date
$RoopCounter
Write-Host ($StopTime - $StartTime).TotalSeconds

```

以上です。ご参考までに。