我正在尝试重命名一些文件。路径和文件名中有[
、]
和空格等符号。重命名命令显示找不到该文件。
有一个包含符号的主文件和一个“临时”文件。应删除主文件,临时文件的名称应与原始文件的名称相同。
我的代码是:
$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
}