Windows批处理输出换行符女性角色

时间:2013-12-10 20:21:02

标签: bash

在所有bash脚本中以“女性符号”的形式打印出一个额外的换页符。

  • 字符:♀
  • 数码:♀
  • 十六进制代码:♀

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

我正在尝试使用Ant工具为Android构建一个APK,并且女性符号会破坏脚本。

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

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

当我运行此行php -f script.php(其中 script.php 包含上面的代码时)输出如下:

♀
String

所以再一次,这不是特定于程序的问题,而是系统范围的问题。我无法在另一台机器上重现它。

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

你知道这可能是什么原因吗?

2 个答案:

答案 0 :(得分:5)

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

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

C:\>echo %RELAY%
♀test

问题是cmd的AutoRun中的CLS命令。 的startup.bat:

@echo off
doskey ps=C:\tools\tasklist_by_name.bat $1
doskey kill=C:\tools\taskkill_by_pid.bat $1
doskey list=doskey /macros$bsort
cls

它与此

一起运行
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
AutoRun "C:\tools\startup.bat"

当我删除CLS命令时,没关系。 您可以在系统上查看它,也可以设置AutoRun。

答案 1 :(得分:0)

这是检测问题的最小批处理脚本:

@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