无法在批处理文件中使用ascii空间

时间:2015-11-18 14:17:11

标签: batch-file

我正在尝试制作一个取消隐藏USB文件夹的程序。 有时当pc中有病毒时,所有数据都隐藏在文件夹名称“”(ASCII空间)中,属性系统和隐藏。当我输入命令时

attrib " " -h -s

在cmd中,它撤消了hide和system属性,但当我使用bat文件键入相同的命令时,它显示错误

G:\>attrib "á" +h +s
File not found - á

1 个答案:

答案 0 :(得分:2)

公然mojibake案。 证明:重现问题,复制&将下一个代码段粘贴到一个打开的cmd窗口中(而不是批处理文件中):

echo OFF
chcp 1250
echo(dir /B /S /A " ">33782406.bat
33782406.bat
echo no-break space 0xA0 = Alt+0160>" "
type 33782406.bat
33782406.bat

chcp 852
type 33782406.bat
33782406.bat
echo ON

<强>输出

==> echo OFF
chcp 1250
Active code page: 1250
echo(dir /B /S /A " ">33782406.bat
33782406.bat
File Not Found
echo no-break space 0xA0 = Alt+0160>" "
type 33782406.bat
dir /B /S /A " "
33782406.bat
D:\bat\UnASCII Names\ 

chcp 852
Active code page: 852
type 33782406.bat
dir /B /S /A "á"
33782406.bat
File Not Found
echo ON

==>

结论:使用适当的代码页(字符集)运行脚本,与保存的批处理文件编码相同(Windows记事本的ANSI符合例如CP1250或{{ 1}}取决于您的区域设置,另请参阅CP1252工具)。

下一张图片说明从原始代码行复制的charmap不是ASCII空间。

no-break space