PDA

Показать полную графическую версию : [решено] если файл существует, выполнить


Alexander_88
01-07-2018, 11:43
здравствуйте, подскажите как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд и продолжить код, а если не существует, то просто продолжить код?

if exist = "new.txt" pause

вроде выполняет паузу, если находит файл.. но как добавить еще одну команду.. ?например

if exist = "new.txt" pause, del *.txt

Alexander_88
01-07-2018, 12:40
Нашел, через &

только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия..
"Скопировано 1 файл"
Нельзя ли сделать, отчет для всех действий?

Iska
01-07-2018, 13:07
как можно проверить существует ли файл, если да, то выполнить не одну, а несколько команд »
if exist "bla-bla-bla.txt" (
echo bla-bla-bla1
echo bla-bla-bla2
echo bla-bla-bla3
)
например
if exist = "new.txt" pause, del *.txt »
if exist "new.txt" (
pause
del *.txt
)
Нашел, через & »
Необязательно «через &». Это, скорее, исключение, нежели типичное использование.

только вот если использовать две команды, удаление и копирование.. показывается отчет только последнего действия.. »
Это совсем не так. По умолчанию команда del не отображает имена удалённых файлов. Читайте:
del /?
о том, как изменить данное поведение.

megaloman
01-07-2018, 13:10
Alexander_88, @Echo Off

If Exist "new.txt" (
Echo File Exist
Del *.txt
Pause
)
rem остальной код
То есть, вы можете нарисовать сколько угодно строк. Но при этом надо помнить, что при присваивании переменным значений (Set что-то=чему-то) будет проблема с раскрытием этих значений
Я бы предпочел с точки зрения читаемости кода и свободы работы с переменными оформить процедуру, например вот так@Echo Off

If Exist "new.txt" Call :FExist "*.txt"

rem остальной код

GoTo :Eof

:FExist
Echo File Exist
Del %1
Pause
GoTo :Eof
Опять же, естественно в процедуре можете нарисовать нужное количество строк кода

Alexander_88
01-07-2018, 13:35
спасибо.. вроде заработало :)

mwz
01-07-2018, 13:54
Alexander_88, ну и можно действовать "от противного", что в ряде случаев облегчает задачу:
if NOT exist "<Drive>:\<Path>\new.txt" GoTo :SkipCode
Echo File Exist
Del *.txt
Pause
(и т.д.)
:SkipCode
(и далее — продолжение батника)
Во избежание "неожиданных" осложнений с исполнением батника имеет смысл указывать не просто имя файла, а имя с полным путём, как в примере (либо применять любые другие варианты типа pushd, чтобы оказаться именно в каталоге файла new.txt).




© OSzone.net 2001-2012