Windows批处理输出换行符母字符



在所有bash脚本中都会以"女性符号"的形式打印出一个额外的表单提要字符。

  • 角色:♀
  • 数字代码:&9792
  • 十六进制代码:&x2640

主要问题是表单提要是不可打印的字符。因此,大多数进程路径的bash脚本都没有为表单提要和崩溃实现过滤机制。

我正试图使用Ant工具为android构建一个APK,而女性符号破坏了脚本。

我还可以在从bash运行的所有PHP脚本中看到女性符号。下面是一个简单的测试脚本:

 if (isset($argv[1])) {
     echo "nStringn";
 } else {
     passthru('php -f ' . __FILE__ . ' arg1');
 }

当我运行这行php -f script.phpscript.php包含上面的代码)时,输出如下:

♀一串

所以再一次,这不是一个特定于项目的问题,而是全系统的问题。我没能在另一台机器上复制它。

大约一周以来,我一直在寻找可能导致这种情况的答案,但没有成功。

你知道造成这种情况的根本原因是什么吗?

我今天在表单提要符号上遇到了类似的问题:

for /f "tokens=1,2 delims=!" %a in ('echo test') do (set RELAY=%a)
C:>echo %RELAY%
♀test

问题是cmd的"自动运行"中的CLS命令。startup.bat:

@echo off
doskey ps=C:toolstasklist_by_name.bat $1
doskey kill=C:toolstaskkill_by_pid.bat $1
doskey list=doskey /macros$bsort
cls

它与这个一起运行

HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
AutoRun "C:toolsstartup.bat"

当我删除CLS命令时,它是可以的。你可以在你的系统上检查它,也许它上设置了AutoRun。

这里有一个检测问题的最小批处理脚本:

@echo off
for /f "delims=" %%a in ('echo a') do if not "a"=="%%a" (
  echo error : found problem in AutoRun cmd (you can try to remove cls and virtual terminal sequences)
  exit /B 1
)
rem etc.
exit /B 0

最新更新