尝试记录输出时的变量问题

Problems with variables when trying to log output

我目前正在处理一个批处理文件,它运行多个命令,从文本文件中读取值等。 我面临的问题是我无法正确设置变量。

以下代码片段演示了我的问题:

>> %userprofile%\AppData\Local\Temp\test.log 2>&1 (
    echo ### Fetching language...
    powershell -c "(Get-UICulture).Parent.Name" > lang.txt
    set /p LANG=<lang.txt
    echo Your language = %LANG%
)

输出:

### Fetching language...
Your language =

如果删除行 >> %userprofile%\AppData\Local\Temp\test.log 2>&1 一切正常,但输出未写入文件。

我在这里想念什么?

谢谢你!

当口译员看到您第一行的左括号时,您的 %LANG%-Var 就会被评估。这可以通过以下方式禁用:

SETLOCAL ENABLEDELAYEDEXPANSION
>> %userprofile%\AppData\Local\Temp\test.log 2>&1 (
  echo ### Fetching language...
  powershell -c "(Get-UICulture).Parent.Name" > lang.txt
  set /p LANG=<lang.txt
  echo Your language = !LANG!
  )