Этого фрагмент кода ниже лишена все дополнительного барахла, вплоть до просто ошибок генерации коды,Пакетный файл коверкая строку со специальными символами и кавычками внутри для цикла
) «» был неожиданным в в этот раз.
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
Set "regex="(Test_Health=(?!100))""
echo Regex is: %regex%
FOR /L %%I IN (1,1,5) DO (
Set "to_call=call crv.exe "%%I" %regex%"
echo About to call: !to_call!
)
В основном, в реальном сценарии, я пытаюсь вызвать инструмент командной строки, которая принимает сложную строку с потенциально специальными символами в нем, а также регулярное выражении.
я понял, обходной путь, который должен был добавить одну каретку (^
) перед последней котировке %%I
«s:
Set "to_call=call crv.exe "%%I^" %regex%"
Но что чувствует, как грязного хака. Что я делаю неправильно, и что мне делать, чтобы добиться желаемого поведения без грязного взлома?
Я не очень понимаю, почему вы устанавливаете переменную к переменной, а затем используя эту переменную для выполнения вызова другой команды. Я думаю, что вы слишком усложняете свой код. – Squashman
@Squashman Только после отстрела дробовика. Попытка проверить переменные до/после ввода циклов и замедленного расширения, а также для подключения к файлам или консоли. Он не пытается быть эффективным, просто повторяя поведение. Спасибо за ввод, хотя! –