我需要帮助编写批处理脚本
if file newfile.txt exists
then del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
我需要帮助编写批处理脚本
if file newfile.txt exists
then del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
您可以使用简单的弧形括号(也支持其他!)
@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 not exist newfile.txt goto skip
del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
:skip
您可以通过多种方式做到这一点,最干净的方法是:
在单行上:
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语句往往会使以后阅读脚本变得更加困难。
你可以做到这一点的一种方法是使用 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