Windows批处理文件命令创建文件但不写入文件

时间:2017-11-03 19:58:57

标签: windows batch-file

我正在使用批处理文件创建一个信使,我正在尝试存储默认颜色设置。我之前已经存储了其他设置并且没有任何问题,但这次它创建了文件但是将其留空了。

以下是一个例子:

echo Enter the colour you want...
set /p defaultcolor=
if "%defaultcolor%" == "default" @echo 7> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "blue" @echo 1> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "green" @echo 2> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "aqua" @echo 3> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"

如果有人能发现问题,我将非常感激。

4 个答案:

答案 0 :(得分:3)

您的号码和重定向符号之间需要一个空格。

@ECHO 2> file

被解释为

将ECHO的STDERR输出重定向到 file

@ECHO 2 > file

被解释为

2 写入文件

注意您也可以使用插入符转义符如下

echo Enter the colour you want...
set /p defaultcolor=
if "%defaultcolor%" == "default" @echo ^7> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "blue" @echo ^1> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "green" @echo ^2> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"
if "%defaultcolor%" == "aqua" @echo ^3> "\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"

答案 1 :(得分:3)

你可能会稍微缩短它:

Set/P "defaultcolor=Enter the colour you want... "
(
    If /I "%defaultcolor%"=="default" Echo 7
    If /I "%defaultcolor%"=="blue" Echo 1
    If /I "%defaultcolor%"=="green" Echo 2
    If /I "%defaultcolor%"=="aqua" Echo 3
)>"\\user-computer\users\user\documents\codes+stuff\messenger\userdata\%username%\default colour.dll"

请注意.dll个文件通常不包含标准文字。

答案 2 :(得分:2)

其他一些方法:

echo 5 >file.txt 

注意:5之后还有一个空格,也写入文件。

>file.txt echo 5

注意:最强大的解决方案imho。

(echo 5)>file.txt

答案 3 :(得分:1)

删除回声前面的@并在>

之前添加一个空格