2013-08-24 1 views
2

Прежде чем я вспомнил, как выполнить то, что я делал, я попробовал пару разных вещей, вроде просто взломав его.
То, что я пытался выполнить было установить следующую строку в качестве переменной, а затем повторить его в пакетном сценарии:Пакетная программа создает странный неожиданный вывод

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

В конце концов я работал его с помощью от SO, но прежде чем я получил там, Я попробовал это (за некоторые причины):

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

Что я понимаю, не имеет никакого смысла. Однако, как CMD оболочки истолковано то, что я хотел сделать, это следующим образом:

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

Другими словами, когда я набрал код во втором блоке кода выше, и включил эхо в сценарии, что показало вверх в командной строке cmd была команда в третьем блоке кода. Затем была синтаксическая ошибка, и скрипт вышел.

Может ли кто-нибудь объяснить, что произошло? (Не потому, что это не сработало. Это очевидно для меня, а скорее, как он пришел к интерпретации, которую он сделал. Это довольно удивительная реструктуризация оригинальной команды. Я просто не могу понять, как она там попала.)

+0

AIUI Stackoverflow для ответов на вопросы программирования - если вы хотите, чтобы обсудить пути 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

Смежные вопросы