如何重定向到包含输出文件位置的变量

How do I redirect to a variable which contains the location of the output file

这是一件非常愚蠢和简单的事情,我不知道该怎么做

我在一个 bat 文件中定义了一个变量 %debugloglocation%,它包含我想要写入输出的文件的位置。

SETLOCAL ENABLEDELAYEDEXPANSION

echo Some value that has to be logged > %debugloglocation%
echo Some value that has to be logged > %%debugloglocation%%
echo Some value that has to be logged > "%debugloglocation%"

以上方法无效。我应该如何传递位置以便在命令运行时识别它。

输入location.bat

@echo off
cls

set "location=path/to/location"
echo we're working with %location%
pause

应该输出

we're working with path/to/location

cmdset 不需要在 = 之前或之后的任何 space 这将导致一个带有尾随 space 的变量和具有前导 space 的值,即 set var = val 将导致 %var % val

所以总是 set 字符串变量,在 = 之前和之后没有 space 并且在变量之前到值之后包括双引号。正确的方法是:

set "debugloglocation=C:\some path\logfile.log"

之后也始终使用带双引号的变量:

echo some value logged to "%debugloglocation%"

最后,您可以使用括号消除变量的倍数 re-use。 (如果您使用 post.

中演示的方法
(
echo some string logged
echo another string logged
echo third string logged
)>"%debugloglocation%"