Можна скористатися деякими з перерахованих методів Видалення спеціальних символів з рядка за допомогою регулярного виразу (Regex) з пакетним скриптом, наприклад, нижче.
Просто використовуйте власну потужність Windows, розроблену компанією Microsoft і виконати цю роботу просто за допомогою PowerShell у вашому пакетному сценарії, щоб встановити %computername%
без символу non-ASCII для того, що повертається з командами PowerShell.
Пакетний скрипт для видалення не-Ascii
Обов'язково встановіть SET PCName=
змінна відповідно до вашого сценарію, щоб включитися з тим, що ваша логіка вже працює (наприклад, SET PCName=%computername%
і т.д.)
Замість того щоб використовувати DO ECHO %%~F
з FOR /F
цикл у скрипті нижче, ви можете встановити це DO SET PCNameASCII=%%~F
замість, наприклад, і потім %PCNameASCII%
змінна може бути включена в іншу частину логіки пакетного сценарію, і це завжди буде %ComputerName%
значення змінних, але тільки символи ASCII.
@ECHO ON
SET PCName=Laäff¥yTaäffi¡
SET PSScript=%Temp%\~tmpRemovenonascii.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO $String = '%PCName%' >>"%PSScript%"
ECHO $String = $String -replace '[^^\x30-\x39\x41-\x5A\x61-\x7A]+', ''>>"%PSScript%"
ECHO ECHO $String >>"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
FOR /F "TOKENS=*" %%F IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"') DO ECHO %%~F
PAUSE
GOTO EOF
Див Подальші ресурси розділ і примітки для інших методів, які використовують Regex для видалення спеціальних символів тощо.
До (не ascii)
LaõffÑyTaõffií
Після (результати)
LaffyTaffi
Подальші ресурси