3

私はまだ Powershell を学んでいます。そして、非常にシンプルに設計されていることを理解してください。しかし、PowerShell コマンドレットを使用して以下の dos copy コマンドを実行する簡単な方法 (可能な限り簡単な方法) を理解できないと言って恥ずかしいです。そのコピーアイテムはワイルドカードがあまり好きではないようです。私が試したことは、過度に複雑になりました。そして、それでも私が本当にやりたかったことをしませんでした。

コピー *.ps1 *.ps1.bak /y

4

4 に答える 4

5

組み込みの Copy-Item コマンドはこれを行いませんが、小さなスクリプトで目的の機能を取得するのは難しくありません。

Get-ChildItem *.ps1 | Copy-Item -Dest {"${_}.bak"}

Foreach-Objectこの場合、Destinationパラメーターはパイプライン入力も受け入れるため、を使用する必要はありません。パイプライン入力を受け入れるパラメーターの場合、スクリプトブロックを使用してパラメーターの値を計算できます。PowerShell は$_、スクリプト ブロック内でこれを行っているかのように、スクリプト ブロック内で使用するパイプライン オブジェクトにマップしますForeach-Object

于 2013-10-23T02:12:54.737 に答える
0

キースのソリューションは私のお気に入りですが、私が提案したことは次のとおりです。

foreach ($i in Get-ChildItem *.ps1) { copy $i "$i.bak" }
于 2013-10-23T08:12:24.380 に答える
0

これを試して:

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");    
}
于 2013-10-23T01:51:05.110 に答える