如何重定向到包含输出文件位置的变量
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
cmd
的 set
不需要在 =
之前或之后的任何 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%"
这是一件非常愚蠢和简单的事情,我不知道该怎么做
我在一个 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
cmd
的 set
不需要在 =
之前或之后的任何 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%"