私はまだ Powershell を学んでいます。そして、非常にシンプルに設計されていることを理解してください。しかし、PowerShell コマンドレットを使用して以下の dos copy コマンドを実行する簡単な方法 (可能な限り簡単な方法) を理解できないと言って恥ずかしいです。そのコピーアイテムはワイルドカードがあまり好きではないようです。私が試したことは、過度に複雑になりました。そして、それでも私が本当にやりたかったことをしませんでした。
コピー *.ps1 *.ps1.bak /y
私はまだ Powershell を学んでいます。そして、非常にシンプルに設計されていることを理解してください。しかし、PowerShell コマンドレットを使用して以下の dos copy コマンドを実行する簡単な方法 (可能な限り簡単な方法) を理解できないと言って恥ずかしいです。そのコピーアイテムはワイルドカードがあまり好きではないようです。私が試したことは、過度に複雑になりました。そして、それでも私が本当にやりたかったことをしませんでした。
コピー *.ps1 *.ps1.bak /y
組み込みの Copy-Item コマンドはこれを行いませんが、小さなスクリプトで目的の機能を取得するのは難しくありません。
Get-ChildItem *.ps1 | Copy-Item -Dest {"${_}.bak"}
Foreach-Object
この場合、Destination
パラメーターはパイプライン入力も受け入れるため、を使用する必要はありません。パイプライン入力を受け入れるパラメーターの場合、スクリプトブロックを使用してパラメーターの値を計算できます。PowerShell は$_
、スクリプト ブロック内でこれを行っているかのように、スクリプト ブロック内で使用するパイプライン オブジェクトにマップしますForeach-Object
。
キースのソリューションは私のお気に入りですが、私が提案したことは次のとおりです。
foreach ($i in Get-ChildItem *.ps1) { copy $i "$i.bak" }
これを試して:
copy-item -rec -filter *.ps1 C:\Source C:\Dest
アップデート:
a = Get-Item .\*.ps1
foreach($file in $a)
{
Copy-Item $file.FullName "C:\mydir\$($file.Name.replace(".ps1",".ps1.bak");
}