Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] если файл существует, выполнить

Ответить
Настройки темы
CMD/BAT - [решено] если файл существует, выполнить

Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
if exist = "new.txt" pause
вроде выполняет паузу, если находит файл.. но как добавить еще одну команду.. ?например

Код: Выделить весь код
if exist = "new.txt" pause, del *.txt

Отправлено: 11:43, 01-07-2018

 

Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


Нашел, через &

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

Отправлено: 12:40, 01-07-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 13:07, 01-07-2018 | #3


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


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
Опять же, естественно в процедуре можете нарисовать нужное количество строк кода

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 01-07-2018 | #4


Ветеран


Сообщения: 531
Благодарности: 4

Профиль | Отправить PM | Цитировать


спасибо.. вроде заработало

Отправлено: 13:35, 01-07-2018 | #5

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Mikhail Zhilin

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:54, 01-07-2018 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] если файл существует, выполнить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование, если файл с таким именем уже существует... Pshek Скриптовые языки администрирования Windows 15 30-07-2018 15:51
Любой язык - [решено] Перемещение файлов и удаление дубликатов из source, если файл существует dedajuno Скриптовые языки администрирования Windows 5 26-09-2017 08:09
CMD/BAT - создать файл если не существует t0ster Скриптовые языки администрирования Windows 0 22-05-2017 21:25
CMD/BAT - [решено] Выполнить А если размер файла с логом 0 и В если размер больше 0 AlexxBross Скриптовые языки администрирования Windows 4 16-10-2013 14:14
PowerShell - [решено] Выполнить, если существует папка acma Скриптовые языки администрирования Windows 4 30-10-2012 15:30




 
Переход