批处理程序产生奇怪的意外输出

时间:2013-08-24 23:36:06

标签: variables batch-file cmd escaping output

在我记得如何完成我正在做的事情之前,我尝试了几种不同的东西,有点只是黑客攻击。
  我想要完成的是将以下字符串设置为变量,然后在批处理脚本中将其回显:

<?php require('__php__.php'); ?>

我最终在SO的帮助下解决了这个问题,但在我到达之前,我尝试了这个(因为一些原因):

 set (phpStr=<? php require('__php__.php'); ?>)

我意识到这没有任何意义。但是,cmd shell如何解释我想要做的事情如下:

 set (phpStr= php require('__php__.php'); ? 0<? 1>)

换句话说,当我在上面的第二个代码块中输入代码并在脚本中打开echo时,cmd shell中显示的是第三个代码块中的命令。然后出现语法错误,脚本退出。

任何人都能解释发生了什么吗? (不是为什么它不起作用。这对我来说是显而易见的,而是它如何达到它所做的解释。这是对原始命令的非常棒的重组。我只是无法弄清楚它是如何到达那里的。)

1 个答案:

答案 0 :(得分:0)

您需要使用^转义重定向和其他有毒字符,否则重定向将处于活动状态并尝试创建文件等。%是一种特殊情况。

您也可以使用以下内容:

@echo off
for /f "delims=" %%a in ("<?php require('__php__.php'); ?>") do echo %%a
相关问题