Пакетный файл, если даёт неожиданные результаты - PullRequest
2 голосов
/ 21 марта 2011

Хорошо, так что я не уверен, что здесь происходит.Я надеюсь, что это будет очевидно для второго взгляда.Я выполняю оператор If и получаю одинаковые результаты независимо от того, что ...

if \%3\==\\ (set filter=FullExclude.txt) else (set filter=%3)
if %filter%==%3 (set output = CustomDiffData) else (set output = USERDATA) 
echo %output%

параметр 3 вводится в custom.txt

, поэтому первым, если должно быть значение falseи фильтр установлен на custom.txt, это подтверждается эхом.

Далее, если должно быть истиной, потому что custom.txt = custom.txt ... это то, где все становится странным, потому что вывод эха возвращает USERDATA даже страннееесли я сделаю это:

if %filter%==%3 (set output = USERDATA) else (set output = CustomDiffData)
echo %output%

Я все еще получаю ответ USERDATA.

Любые идеи, почему это так?

это на самом верху моего сценария минус дванулевой параметр проверяет, что просто завершить сценарий.

1 Ответ

2 голосов
/ 22 марта 2011

Основная проблема - set output =... вы используете переменную с именем output<space>, а не output.

Вы должны избегать (ненужных) пробелов в пакетных файлах.

Другая проблема может быть в строке if \%3\==\\, так как% 3 может содержать пробелы или специальные символы, что может привести к ошибке пакета.
Лучше использовать кавычки, такие как если "% ~ 3" == "" (установить фильтр = FullExclude.txt), иначе (установить "фильтр =% ~ 3")

И чтобы избежать второго сравнения, вы можете изменить код на

if "%~3"=="" (
    set filter=FullExclude.txt
    set output=USERDATA
) else (
    set "filter=%~3"
    set output=CustomDiffData
)
echo %output%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...