GCRaistlin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору wolf0425 А зачем перед echo отключать delayed expansion? Вообще, delayed expansion - полезная штука не только для получения актуального значения переменной внутри одной команды. По-хорошему, если передаются аргументы из комстроки, это уже достаточная причина, чтобы она была включена. Задача: вывести на экран строку, переданную в виде аргумента 2, если он не равен аргументу 1. Без delayed expansion в общем случае ее решить невозможно, т. к. никто не мешает пользователю в качестве второго аргумента указать foobar"&, и мы гарантированно вылетем с ошибкой при сравнении. Можете попробовать. А с delayed expansion все очень изящно: Код: @echo off setlocal enableextensions disabledelayedexpansion || ( echo Error goto :eof ) set Arg1=%1 if defined Arg1 ( set Arg2=%2 ) else ( echo Error goto :eof ) if not defined Arg2 ( echo Error goto :eof ) setlocal enabledelayedexpansion if not !Arg1! == !Arg2! echo !Arg2! | Концевые пробелы в строках сами убирайте - здесь кавычки использовать нельзя.
---------- Magically yours Raistlin |
| Всего записей: 4132 | Зарегистр. 18-04-2005 | Отправлено: 17:26 06-12-2013 | Исправлено: GCRaistlin, 17:55 06-12-2013 |
|