在我记得如何完成我正在做的事情之前,我尝试了几种不同的东西,有点只是黑客攻击。
我想要完成的是将以下字符串设置为变量,然后在批处理脚本中将其回显:
<?php require('__php__.php'); ?>
我最终在SO的帮助下解决了这个问题,但在我到达之前,我尝试了这个(因为一些原因):
set (phpStr=<? php require('__php__.php'); ?>)
我意识到这没有任何意义。但是,cmd shell如何解释我想要做的事情如下:
set (phpStr= php require('__php__.php'); ? 0<? 1>)
换句话说,当我在上面的第二个代码块中输入代码并在脚本中打开echo时,cmd shell中显示的是第三个代码块中的命令。然后出现语法错误,脚本退出。
任何人都能解释发生了什么吗? (不是为什么它不起作用。这对我来说是显而易见的,而是它如何达到它所做的解释。这是对原始命令的非常棒的重组。我只是无法弄清楚它是如何到达那里的。)
答案 0 :(得分:0)
您需要使用^
转义重定向和其他有毒字符,否则重定向将处于活动状态并尝试创建文件等。%
是一种特殊情况。
您也可以使用以下内容:
@echo off
for /f "delims=" %%a in ("<?php require('__php__.php'); ?>") do echo %%a