Перенаправление команд в макросах возвращает синтаксическую ошибку - PullRequest
0 голосов
/ 28 марта 2020

Я работаю в стиле пакетного макроса , изобретенном @ jeb , @ dbenham и пользователем DosTips @ Ed Dyreen . Макрос безопасно выводит %1 в файл и использует SET /P для извлечения и установки переменной. Полный сценарий

Однако строка

>args.tmp FOR %%? in (%%?) do REM .

возвращает синтаксическую ошибку

FOR %%? in в это время была неожиданной

Однако я не могу поместить всю команду в круглые скобки, потому что последняя строка была разработана для «перехвата» аргументов, например:

%$MACRO.GetArgs% COMMAND_LINE_ARGS

, которая будет расширена до:

SETLOCAL ENABLEDELAYEDEXPANSION & >args.tmp FOR %%? in (%%?) do REM . COMMAND_LINE_ARGS_THAT_CAN_BE_SAFELY_PROCESSED

Таким образом, это непрактично :

>args.tmp (
FOR %%? in (%%?) do REM .
)

Краткое описание: Существуют ли другие способы перенаправления вывода команды в файл?
Источники:

1 Ответ

1 голос
/ 29 марта 2020

Чрезвычайно важно добиться этого, используя метод Macro, или этого решения для избежания ввода будет достаточно?

@Echo off & CD %~dp0
Setlocal DisableDelayedExpansion

Echo("%~1">param.txt

For /F "Tokens=* Delims=" %%A in (param.txt) Do Set ^"param=%%~A"


Setlocal EnableDelayedExpansion
Echo(!param!

ограничение для параметра должно быть заключено в кавычки для получения всех символов.

Принимает все стандартные символы

param "!@#$%^&*(_)%$#@ "Test" !><,./\?[]{}:;'|`~+=-"

Вывод:

exmaple parameter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...