2013-08-24 111 views
2

在我想起如何完成我在做的事情之前,我嘗試了一些不同的東西,只是簡單地抨擊它。
我試圖完成是設置以下字符串作爲變量,然後呼應它在批處理腳本:批處理程序產生奇怪的意外輸出

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

我最終與幫助工作了從SO,但在此之前我到了那裏,我想這(對一些原因):

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

這我知道沒有任何意義。然而,如何運行cmd shell解釋什麼,我想做的就是如下:

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

換句話說,當我輸入上面的第二個代碼塊中的代碼,並在劇本開啓回聲,什麼露面在cmd shell中是第三個代碼塊中的命令。然後出現語法錯誤,腳本退出。

任何人都可以解釋發生了什麼? (不是爲什麼它不起作用,這對我來說是顯而易見的,而是它是如何得到它的解釋的,這是對原始命令的一次非常棒的重構,我只是無法弄清楚它是如何得到它的。)

+0

AIUI#2是解答編程問題 - 如果你想討論的方式在各種方式CMD功能,那麼你可能會更好張貼到像http://www.dostips.com/forum/這樣的論壇,其中一些非常敏銳的人討論批處理相關的現象 - 以及幫助人們處理更多世俗的任務。它在論壇標題中提到了XP,但討論了Windows的所有版本。 – foxidrive

回答

0

您需要轉義重定向和其他有毒字符與^或重定向將被激活並嘗試創建文件等%是一種特殊情況。

您也可以使用這樣的事情:

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

這很有用。我沒有考慮使用/ f開關。但是,它不回答我的問題。 – user1167442

+0

重定向處於活動狀態並嘗試創建文件 - 這是無效批處理語法。你還需要知道什麼? – foxidrive

+0

看看第二個和第三個代碼塊之間的區別。它重新排列字符順序。有些事情正在響應括號和三角括號。我想理解這一點,因爲如果我理解它,似乎它可能會有有用的應用程序。 – user1167442