Redirect CMD-如果存在<;文件>;
根据我的理解,下面的命令(添加了调试行-缩进)应该只将echo的输出重定向到一个文件,如果它已经存在的话 然而,似乎Redirect CMD-如果存在<;文件>;,redirect,if-statement,cmd,exists,Redirect,If Statement,Cmd,Exists,根据我的理解,下面的命令(添加了调试行-缩进)应该只将echo的输出重定向到一个文件,如果它已经存在的话 然而,似乎如果存在%test0%总是用echo的输出填充文件(如果不存在则创建它) 有人知道怎么回事吗 @echo off type test.bat set test0="e:\documents and settings\administrator\desktop\test.log" echo.&echo. if exist %test0% (echo !!Exist
如果存在%test0%
总是用echo的输出填充文件(如果不存在则创建它)
有人知道怎么回事吗
@echo off
type test.bat
set test0="e:\documents and settings\administrator\desktop\test.log"
echo.&echo.
if exist %test0% (echo !!Exists!!) else (echo !!Doesn't Exist!!)
(if exist %test0% echo.&echo.&echo -------------------------------------------------&echo.&echo.)>>%test0%
然后创建文件(!)
EDIT:上面的示例是一个简化的示例,不幸的是,这个答案并不能帮助我解决完整的命令(我希望它会)。完整的单行if语句是:
if exist%test0%(echo&echo&echo------------------------------------------------------------------&echo&echo.)else(set/p.=>%test0%&set errorlevel=0 | | set errorlevel=1
如果if
的任何条件与文件的输出相匹配(希望只有一个文件引用,即每个if
条件中没有一个),我将如何根据文件的存在设置错误级别
有人可以帮助解决实际的完整命令问题吗?检查括号。(x)>>output.log
将x
的输出重定向到output.log
。这意味着无论输出是什么,都会发生重定向,尤其是始终创建文件
现在,如果您编写if Y(echo Text>>output.log)
重定向将以Y
为条件,并且可能不会发生
[编辑]
按照现在的措辞,简单的解决方案似乎是:
基于存在%test0%
设置%ERRORLEVEL%
。此时未发生重定向
使用%ERRORLEVEL%
确定要执行的操作。您可以更改%test0%
,而无需更改%ERRORLEVEL%
顺便说一句,您应该不要直接设置ERRORLEVEL。该名称保留用于报告上一个命令的结果。当您直接设置该值时,您覆盖了预期的功能,它不再扩展到实际的ERRORLEVEL,而是扩展到您设置的值。这可能会破坏所有类型的代码
您可以通过运行具有已知结果的命令,将输出重定向到nul(如有必要):ver>nul
将ERRORLEVEL设置为0,set/p.=感谢MSalters-我原以为if
语句不会解析echo
的ifexist
没有返回true,因此没有输出到s结束到文件(虽然接受文件可能已创建为空)。我实际上简化了问题,因此如果我可以问如何进行以下操作(根据您的答案,根据我的最佳猜测进行调整,这不起作用),if exist%test0%((echo.&echo.&echo---------------------------------------------------&echo.&echo.)else(echo.))>>%test0%
非常感谢。我意识到这是我第三次移动目标帖子,可以这么说,但是errorlevel
不是实际的变量名(虽然这可能是个坏主意,但比真正的变量名更容易阅读-谢谢提醒)。至于set/p.=1)如果文件不存在,则创建一个不包含任何内容的文件;或者用双空行+破折号行+双空行填充(最好只使用一个>文件
指令,而不是在每个if条件下使用一个)。2) 根据重定向是否成功,设置一个变量或%errorlevel%
。谢谢,第一个变量似乎同时满足两个条件;第二个总是用空白行+破折号创建(或修改)文件,但从不只是创建一个空文件,即使在运行之前不存在。然而,我很好奇,在第二个例子中,是否没有办法将true或false条件输出到文件中,它是否必须是其中一个,或者谁声明了两个重定向?@user66001-您是否实际运行了第二个编辑的代码?如果不存在空文件,则追加重定向将创建该空文件它总是有空行+破折号,每次运行后删除.log文件。
if exist %test0% (
echo.
echo.
echo -------------------------------------------------
echo.
echo.
ver >nul
) >>%test0% else (
set /p .=<nul
)
if exist %test0% (
(
echo.
echo.
echo -------------------------------------------------
echo.
echo.
set ERR=0
) >>%test0%
) else (
copy nul %test0%
set ERR=1
)