2010-08-31 80 views
3

我需要寫一個批處理腳本.BAT如果然後聲明

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

刪除了稱呼:「在此先感謝,\ n喬」,下次不要這樣做 – 2015-05-21 18:17:09

回答

8
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

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

你可以這樣做的一種方法是讓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

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的古老版本。在這種情況下,如果在第一個語句中更改了第一個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