【发布时间】:2018-04-02 06:20:52
【问题描述】:
目前正在使用一个小的 powershell 脚本来检查文件结构中的非法字符,但是我遇到了一个我不熟悉的字符。我需要修改代码以检测和替换该字符是(或代表)的任何内容,但我无法实际键入该字符,它仅在文件资源管理器中查看时显示。该字符显示为方形项目符号,但如果我将其复制/粘贴到任何地方,它将变为带有问号的框。有人知道这个角色的alt代码吗?或者我可以用来检测和替换它的替代线?
需要进入的代码如下:
function OneDrive-Check($Folder,[switch]$Fix){
$Items = Get-ChildItem -Path $Folder -Recurse
$UnsupportedChars = '[!&{}~#%]'
foreach ($item in $items){
filter Matches($UnsupportedChars){
$item.Name | Select-String -AllMatches $UnsupportedChars |
Select-Object -ExpandProperty Matches
Select-Object -ExpandProperty Values
}
$newFileName = $item.Name
Matches $UnsupportedChars | ForEach-Object {
Write-Host "$($item.FullName) has the illegal character $($_.Value)" -ForegroundColor Red
if ($_.Value -match "&") { $newFileName = ($newFileName -replace "&", "and") }
if ($_.Value -match "{") { $newFileName = ($newFileName -replace "{", "(") }
if ($_.Value -match "}") { $newFileName = ($newFileName -replace "}", ")") }
if ($_.Value -match "~") { $newFileName = ($newFileName -replace "~", "-") }
if ($_.Value -match "#") { $newFileName = ($newFileName -replace "#", "") }
if ($_.Value -match "%") { $newFileName = ($newFileName -replace "%", "") }
if ($_.Value -match "!") { $newFileName = ($newFileName -replace "!", "") }
}
if (($newFileName -ne $item.Name) -and ($Fix)){
Rename-Item -LiteralPath $item.FullName -NewName ($newFileName)
Write-Host "$($item.Name) has been changed to $newFileName" -ForegroundColor Green
}
}
}
人物图片如下,日期两侧:
谢谢!
【问题讨论】:
-
您是否尝试更改您的代码页? windows命令行:chcp
-
@f14284 代码页提示引导我走上正确的道路,现在解决了,谢谢!
-
好吧,不客气。
标签: powershell onedrive