3

我需要帮助编写批处理脚本

if file newfile.txt exists
then  del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
4

4 回答 4

10

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

@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
)
于 2010-08-31T17:18:47.840 回答
8
if not exist newfile.txt goto skip
del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
:skip
于 2010-08-31T17:15:30.100 回答
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。)

我想不出使用 GOTO 语句的理由,除非您使用的是旧版本的 Windows。在这种情况下,如果您正在测试的内容(在这种情况下,如果 newfile.txt 存在)在第一个IF语句中被更改(例如,在这种情况下被删除),我只会使用GOTO语句。GOTO语句往往会使以后阅读脚本变得更加困难。

于 2012-07-17T04:16:39.817 回答
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

于 2010-08-31T17:33:47.967 回答