如何在CMD批处理中使用"codepage 932"个字符? (全角斜线)
How to use "codepage 932" characters in CMD batch? (fullwidth solidus)
我正在尝试读取我的批处理文件中的文件夹名称,其中包含我收集到的 全角斜线字符 (/) 属于 代码页 932 .
我试图在我的批处理中输入 chcp 932,但控制台报告 "invalid codepage"。如何在我的批处理文件中启用此代码页?使用 cp1252 或 utf8 已证明不成功。
注意:只要实际脚本有效,我就可以接受控制台 window 显示乱码。
你能用通配符围绕它编写脚本吗?如果文件夹名为 folder/name
(其中 /
是 Unicode 字符 0xff0f),请执行类似
的操作
for /d %%I in ("folder?name") do set "folder=%%~I"
现在您可以通过 %folder%
引用它而无需更改您的代码页。
伙计,DejaVu Sans Mono(我的控制台字体)甚至没有那个字符的字形。
有趣的是,for /F
将 Unicode solidus 转换为非扩展 /。看看这个:
如果我使用 for /f
将变量设置为 powershell "[char]0xff0f"
的输出,然后执行 if "%var%"=="/"
(0x2f),它的计算结果为真。 for /f
不知何故知道 / 和 / 在视觉上相似,还是只是巧合?我不明白这怎么可能是巧合,因为 / (0xff0f) 与 / (0x2f) 没有共同的字节。
嗯,最终,通过这些实验弄清楚了一件事。您不能使用 for /f "delims=" %%I in ('dir /b /a:d "folder?name"')
来填充变量,除非您 chcp 65001
将代码页更改为 Unicode。必须是 for /d
.
批处理文件 .BAT 和 .CMD 在写入文件本身时只允许使用 ANSI 字符集。
另一个答案显示了如何从支持必要代码页的命令中引入 UNICODE 字符。
您可以将特殊字符存储在 UNICODE 文本文件中,并通过使用“|”、“<”或 FOR 命令将它们引入。
我正在尝试读取我的批处理文件中的文件夹名称,其中包含我收集到的 全角斜线字符 (/) 属于 代码页 932 .
我试图在我的批处理中输入 chcp 932,但控制台报告 "invalid codepage"。如何在我的批处理文件中启用此代码页?使用 cp1252 或 utf8 已证明不成功。
注意:只要实际脚本有效,我就可以接受控制台 window 显示乱码。
你能用通配符围绕它编写脚本吗?如果文件夹名为 folder/name
(其中 /
是 Unicode 字符 0xff0f),请执行类似
for /d %%I in ("folder?name") do set "folder=%%~I"
现在您可以通过 %folder%
引用它而无需更改您的代码页。
伙计,DejaVu Sans Mono(我的控制台字体)甚至没有那个字符的字形。
有趣的是,for /F
将 Unicode solidus 转换为非扩展 /。看看这个:
如果我使用 for /f
将变量设置为 powershell "[char]0xff0f"
的输出,然后执行 if "%var%"=="/"
(0x2f),它的计算结果为真。 for /f
不知何故知道 / 和 / 在视觉上相似,还是只是巧合?我不明白这怎么可能是巧合,因为 / (0xff0f) 与 / (0x2f) 没有共同的字节。
嗯,最终,通过这些实验弄清楚了一件事。您不能使用 for /f "delims=" %%I in ('dir /b /a:d "folder?name"')
来填充变量,除非您 chcp 65001
将代码页更改为 Unicode。必须是 for /d
.
批处理文件 .BAT 和 .CMD 在写入文件本身时只允许使用 ANSI 字符集。
另一个答案显示了如何从支持必要代码页的命令中引入 UNICODE 字符。
您可以将特殊字符存储在 UNICODE 文本文件中,并通过使用“|”、“<”或 FOR 命令将它们引入。