У меня проблема с моим пользовательским макросом, и я пока не знаю, как ее решить. Я надеюсь, что кто-то здесь знает ответ, и моя жизнь станет более яркой после его или ее полезного совета. Пример сценария ms-dos:
@echo off
setlocal enabledelayedexpansion
set @test_macro=^
set /a "test_num1=1"^&set /a "test_num2=1"^&^
(for /L %%n in (1,1,10) do (set /a "test_num1+=%%n"^&set /a "test_num2*=%%n"))^>nul^&^
echo ^^^!test_num1^^^! ^^^!test_num2^^^!
set @test_of_test_macro=for /F "usebackq tokens=*" %%i in (`"cmd /d /q /e:on /v:on /r ^!@test_macro^!"`) do echo %%i
echo Usual call, gives expected output "56" ^& "3628800":
%@test_macro%
echo Call from another macro, gives expected output "56" ^& "3628800", but followed by garbage "11":
%@test_of_test_macro%
Дает следующий вывод:
Usual call, gives expected output "56" & "3628800":
56 3628800
Call from another macro, gives expected output "56" & "3628800", but followed by garbage "11":
1156 3628800
Это поведение erroneus изменяется в зависимости от количества инициализированных числовых переменных c и в порядке их инициализации, но приведенный выше сценарий дает представление о проблеме.
Кто-нибудь знает простой и надежный способ подавления этих ложных отраженных символов? Не всегда возможно обойти это, и было бы очень полезно как-то отменить это.
Заранее спасибо.