Powershell 使用变量和特殊字符重命名

Powershell 使用变量和特殊字符重命名

我正在尝试重命名一些文件。路径和文件名中有[]和空格等符号。重命名命令显示找不到该文件。

有一个包含符号的主文件和一个“临时”文件。应删除主文件,临时文件的名称应与原始文件的名称相同。

我的代码是:

$onlypath = Split-Path -Path $_.FullName
Rename-Item $onlypath + "\TEMP" $_.Name

并测试许多其他语法,如

Rename-Item -Path "$onlypath\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath"\TEMP" -NewName $_.Name 
or
Rename-Item -Path $onlypath + "\TEMP" -NewName $_.Name 

每次都会出现错误,文件不在这个地方。我尝试在 shell 中执行该命令,但出现同样的错误,但如果我在符号前添加 ` 作为转义字符,它就可以起作用。

问候

答案1

看看你的代码,我认为你不想重命名该文件,但是移动将其移至新路径。Rename-Item 用于重命名文件的实际位置。然后为其指定一个新文件名,而不是更改路径。

此外,如果文件包含类似的符号,则[,]需要指定-LiteralPath-Path

尝试

$sourcePath  = 'X:\Somewhere\Here[123]'
$destination = Join-Path -Path $sourcePath -ChildPath 'Temp'
# make sure the destination folder exists
$null = New-Item -Path $destination -ItemType Directory -Force
# get the files and move them to the destination
Get-ChildItem -LiteralPath $sourcePath -File | ForEach-Object {
    Move-Item -LiteralPath $_.FullName -Destination $destination
}

相关内容