.bat If Тогда заявление - PullRequest
       5

.bat If Тогда заявление

3 голосов
/ 31 августа 2010

Мне нужна помощь в написании пакетного скрипта для

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

Ответы [ 4 ]

10 голосов
/ 31 августа 2010

Вы можете использовать простые изогнутые скобки (также поддерживающие другое!)

@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
)
8 голосов
/ 31 августа 2010
if not exist newfile.txt goto skip
del "InDesignData.txt"
ren "newfile.txt" "InDesignData.txt"
:skip
4 голосов
/ 17 июля 2012

Вы можете сделать это несколькими способами, самые чистые методы будут:

В одной строке:

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"

Илиusing ()

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

Использование скобок является улучшением по сравнению с использованием GOTO, потому что это намного более чистый код.(Это обычно не то, о чем я думаю в первую очередь, потому что я изучил BATCH под MS-DOS.)

Я не могу придумать причину использовать оператор GOTO, если вы не используете и древнюю версию Windows.И в этом случае я бы использовал оператор GOTO только в том случае, если то, что вы проверяете (в этом случае, если существует newfile.txt), изменяется (скажем, удаляется в этом случае) в первом IF заявление.Оператор GOTO имеет тенденцию усложнять чтение сценария позднее.

0 голосов
/ 31 августа 2010

Один из способов сделать это - использовать операторы и метки для ошибок и успехов и использовать 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

НТН, EB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...