フォルダー内のすべての MP3 ファイル名の最初の 20 文字を削除するスクリプトを powershell で作成しようとしています。ファイル 'test.ps' を作成し、以下の powershell コードを挿入しました。
gci *.mp3 | rename-item -newname { [string]($_.name).substring(20) }
このファイルを powershell.exe で実行しても何も起こりません。
誰でも助けることができますか?ありがとう。
フォルダー内のすべての MP3 ファイル名の最初の 20 文字を削除するスクリプトを powershell で作成しようとしています。ファイル 'test.ps' を作成し、以下の powershell コードを挿入しました。
gci *.mp3 | rename-item -newname { [string]($_.name).substring(20) }
このファイルを powershell.exe で実行しても何も起こりません。
誰でも助けることができますか?ありがとう。
これで始められるかもしれません。(おそらくもっと簡潔な方法がありますが、これは機能し、後で維持する必要があるときに読みやすくなります。:-))
フォルダーを作成しC:\TempFiles
、そのフォルダーに次のファイルを作成しました。
TestFile1.txt
TestFile2.txt
TestFile3.txt
TestFile4.txt
(昔ながらの方法で作成しました。 <g>.
for /l %i in (1,1,4) do echo "Testing" > TestFile%i.txt
実際のコマンド プロンプトから)。
次にPowerShell ISE
、スタート メニューから開き、このスクリプトを実行しました。$files
ファイルの名前のみを含む配列 ( ) を作成し、それぞれを処理します。
cd \TempFiles
$files = gci -name *.txt
foreach ($file in $files) {
$thename = $file.substring(4);
rename-item -path c:\TempFiles\$file -newname $thename
}
これにより、以下を含むフォルダーが残りました。
File1.Txt
File2.Txt
File3.Txt
File4.Txt
File5.Txt
コマンド ラインからスクリプトを実行するには、デフォルトの Windows セキュリティ設定を変更する必要があります。PowerShell ISE
のヘルプ ファイルを (メニューから) 使用して検索するか、プロンプトからabout_scripts
実行することで、それらについて調べることができます。ヘルプ ファイルのサブセクションを参照してください(はるかに読みやすいです)。help about_scripts
ISE
How To Run A Script
あなたのコードは実際に動作します。2つのこと...
test.ps1
。Get-ChildItem
、現在のディレクトリで実行されます。このようなmp3ファイルをたくさん作ってあなたのラインをテストしました -
1..30 | % { new-item -itemtype file -Name (
$_.ToString().PadLeft(30, 'A') + ".mp3" )}
より「安全な」方法を使用します(ファイル名が問題の長さよりも短い場合、エラーが発生します。ファイル拡張子も合計文字数の一部としてターゲットにしています)。各ファイルのベース名が 21 文字を超えているかどうかを確認します (最初の 20 文字を削除しても、1 文字の長さの名前のままである可能性があります)。最初の 20 個を削除した後にディレクトリに同じ名前のファイルが含まれていると、失敗する可能性があります。自分でさらに開発することができます)。
gci *.mp3 | foreach{
if($_.BaseName.Length -ge 21)
{
$ext = $_.Extension
$BaseName = $_.BaseName.Substring(20)
Rename-Item $_ -NewName "$BaseName$ext"
}
}