Я намагаюся проаналізувати вихідний файл для деяких даних, і у мене виникають проблеми із поверненням значення до моєї оболонки Windows.
Що я намагаюся зробити, це просто повернути значення, використовуючи простий регулярний вираз, і зберегти його в моїй змінній оболонки.
У мене зараз щось подібне:
%VAL% = %PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"
де %VAL%
саме там я хотів би повернути те, що було знайдено $1
, і %PERL%
вказує на локальну копію perl.exe.
Чи може хтось, будь ласка, вказати на правильний спосіб цього?
Відповіді:
2 для відповіді № 1EDIT: Це трохи потворніше Unix:
for /f "tokens=*" %i in ("perl -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"") do set VAL = %i
Або використовувати set /p
з файлом-посередником:
%PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }" > file.txt
set /p VAL = < file.txt
del file.txt
Від Дурні хитрощі
0 для відповіді № 2
Чому ви не створюєте змінну всередині сценарію? Див env_var на вікі-програмі win32 perl.