?添加到String Powershell

时间:2018-06-08 12:02:03

标签: powershell powershell-ise

我正在尝试使用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("?")修剪

2 个答案:

答案 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"
}