.BAT如果然后声明

问题描述:

我需要写一个批处理脚本.BAT如果然后声明

if file newfile.txt exists 
then del "InDesignData.txt" 
ren "newfile.txt" "InDesignData.txt" 
+0

删除了称呼:“在此先感谢,\ n乔”,下次不要这样做 – 2015-05-21 18:17:09

if not exist newfile.txt goto skip 
del "InDesignData.txt" 
ren "newfile.txt" "InDesignData.txt" 
:skip 
+0

感谢您的快速响应! 工程太棒了! – jmituzas 2010-08-31 17:19:35

+0

你的所有我不需要什么更多 – jmituzas 2010-08-31 17:39:37

您可以使用简单的弧形托架帮助

@echo off 
IF EXIST newfile.txt (
del "InDesignData.txt" 
ren "newfile.txt" "InDesignData.txt" 
) 

随着其他(也支持其他!):

@echo off 
IF EXIST newfile.txt (
del "InDesignData.txt" 
ren "newfile.txt" "InDesignData.txt" 
) else (
echo Making tea 
) 

你可以这样做的一种方法是让if语句和实验ELS的错误和成功,并用ECHO在这里调试它......我的例子中有目录的事,但你一定能适应你的文件删除/创建需要:

ECHO Cleaning up folders... 
    if exist %myDir% goto deleteFolder 
    goto createNewDir 

    :deleteFolder 
    echo Deleting %myDir% 
    RMDIR %myDir% /S /Q 
    IF ERRORLEVEL 1 GOTO Error 


    :createNewDir 
    mkdir %myDir% 
    IF ERRORLEVEL 1 GOTO Error 
    goto Done 

    :error 
    echo something went wrong 
    goto End 

    :Done 
    echo Success! 

    :End 

HTH, EB

你可以做几种方式,最干净的方法是:

在单行:

if exist newfile.txt del "InDesignData.txt" & ren "newfile.txt" "InDesignData.txt" 

在不同的行:

if exist newfile.txt del "InDesignData.txt" 
if exist newfile.txt ren "newfile.txt" "InDesignData.txt" 

或者使用()

if exist newfile.txt (
    del "InDesignData.txt" 
    ren "newfile.txt" "InDesignData.txt" 
) 

使用括号是在使用GOTO,因为它是非常干净的代码的改进。 (这通常不是我首先想到的,因为我在MS-DOS下学习了BATCH。)

我想不出使用GOTO语句的原因,除非您使用的是Windows的古老版本。在这种情况下,如果在第一个语句中更改了第一个IF(如果存在newfile.txt),则只会使用GOTO语句。 GOTO声明倾向于使得稍后阅读脚本更加困难。

+0

_On单独lines_我会建议使用括号'if condition(line1 NEWLINE line2)' – jeb 2012-07-17 06:42:13

+0

是的,那是另一种方法。 – 2012-07-17 08:13:19

+1

编辑你的代码,在'del'和'ren'前面不应该有'exist', – Mowgli 2012-11-21 16:45:18