我正在尝试使用powershell重命名文件
$oldPath="c:\users\guest\desktop\old.txt"
$newName="c:\users\guest\desktop\new.txt"
Rename-Item -Path $oldPath -NewName $newName -Force;
我收到以下错误
Rename-Item : Cannot find drive. A drive with the name 'C' does not exist.
通过查看Notepad ++中的代码,我意识到有一个"?"附加在两个路径的前面,这些路径在powershell ise中是不可见的。
记事本++ "?c:\users\guest\desktop\old.txt"
我无法使用$oldPath.TrimStart("?")
修剪
答案 0 :(得分:0)
我尝试从特殊字符清理路径(因为问号在ISE中不可见,它可能不是问号,而是一些特殊字符)。你可以这样做:
$oldPath = $oldPath -replace '[^\w\\:."]', ''
$newName = $newName -replace '[^\w\\:."]', ''
答案 1 :(得分:0)
当然,您总是可以使用一个小函数来删除代码中的无效文件名字符,如下所示:
function Remove-InvalidCharacters ([string]$fileName) {
$invalid = [IO.Path]::GetInvalidPathChars() -join ''
$pattern = "[{0}]" -f [RegEx]::Escape($invalid)
return ($fileName -replace $pattern, '')
}
$oldPath = Remove-InvalidCharacters "c:\users\guest\desktop\old.txt"
$newName = Remove-InvalidCharacters "c:\users\guest\desktop\new.txt"
if (Test-Path $oldPath -PathType Leaf) {
Rename-Item -Path $oldPath -NewName $newName -Force
}
else {
Write-Warning "Path '$oldPath' not found"
}