.bat If Then Statement

时间:2010-08-31 17:12:26

标签: batch-file windows-scripting

我需要帮助编写

的批处理脚本
if file newfile.txt exists
then  del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"

4 个答案:

答案 0 :(得分:10)

您可以使用简单的弯曲括号(也支持其他!)

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

使用else:

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

答案 1 :(得分:8)

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

答案 2 :(得分:4)

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

单行:

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。)

除非您使用的是古老版本的Windows,否则我无法想到使用GOTO语句的原因。在这种情况下,我只会使用 GOTO 语句,如果您正在测试的内容(在这种情况下,如果存在newfile.txt)在第一个中更改(例如,在这种情况下删除)如果声明。 GOTO 语句往往会使阅读脚本变得更加困难。

答案 3 :(得分:0)

你可以这样做的一种方法是使用if语句和标签来表示错误和成功,并使用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