命令 ECHO 的文件重定向问题

file redirect issue with command ECHO

我过去遇到过问题,尝试这样做:

echo 2> test.txt

为了清楚起见,我想将文本“2”放入文件 test.txt 现在,我知道你可以这样做来解决这个问题:

echo.2> test.txt

但是,当我尝试这样做时,问题有点移动了:

echo sometext 2> test.txt

再次明确,我想将文本 "sometext 2" 回显到文件中。所以,尝试同样的技巧:

echo.sometext 2> test.txt

... 但它不起作用,因为点似乎对第一个空格之后的内容没有影响。 (他所做的只是回显 sometext,并将错误消息放入 test.txt。但是,没有错误消息,但他确实创建了一个文件,即使它是一个空文件。)

问题扩展到其他值,例如

echo sometext 8> test.txt

这与将 8 替换为 2 时的效果完全相同。当您这样做时:

echo sometext 1> test.txt

他将创建仅包含内容 "sometext" 的文件 "test.txt"。

问题:如何让这个命令起作用:

echo sometext 2> test.txt

但是,这个问题必须在 "sometext 2" 本身就是一个字符串这一事实的背景下提出,可以用 %some_variable% 之类的变量表示,并且很难在内部操作任何东西那个字符串。更清楚:

我知道这行得通:

echo sometext ^2> test.txt

但是,这意味着我必须将文本 "sometext 2" 更改为 "sometext ^2"。这并非不可能,但如果我可以围绕它操纵命令,那就更容易了。

这可能吗?

ps:我也知道这有效:

echo "sometext 2"> test.txt

但是引号包含在输出文件中。与单引号相同。而且我不希望引号在输出文件中。

用括号括起来:

(echo sometext 2)> file.txt
(echo %some_variable%)> file.txt

直接位于重定向器之前的字符不能是数字。

将重定向器放在行首。

>test.txt echo 2

数字重定向该设备后的重定向器; 2 是 stderr,1 是 stdout,等等