web-dev-qa-db-ja.com

rename-itemおよびfilenameが存在する場合はオーバーライド

Rename-Itemコマンドレットを使用して以下を実行しようとしています。

*。txt」ファイルを含むフォルダーがあります。 1.txt、2.txtなどとしましょう。

プレフィックスが付いているファイルをコピーし、*。txtに名前を変更し、既存のファイルがある場合はそれを上書きします。

例:

フォルダー:c:\ TEST

ファイル:1.txt、2.txt、3.txt、4.txt、5.txt、index.1.txt、index.2.txt、index.3.txt、index.4.txt、index.5 txt

Rename-itemを使用してindex.*.txtをフィルタリングし、それらを*.txtに名前変更し、同じファイルが存在する場合は置き換えます。

君たちありがとう

22
Ilya Gurenko

@lytledwで述べたように、Move-Item -Forceはファイルの名前変更と上書きに最適です。

名前のindex.部分を置き換えるには、-replace正規表現演算子を使用できます。

Get-ChildItem index.*.txt |ForEach-Object {
    $NewName = $_.Name -replace "^(index\.)(.*)",'$2'
    $Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName
    Move-Item -Path $_.FullName -Destination $Destination -Force
}
31

Rename-item -forceを試しましたが、うまくいきませんでした。しかし、私はmove-item -forceを行うことができ、それはうまくいきました

6
lytledw