Меню Закрыть

Bat проверка существования файла

А) Сравнение двух строк

Заметим, что для сравнения строк здесь используется двойной знак равенства "= =".

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

Пример 5. Составим файл iftren.bat, который получает в качестве входного параметра либо символ "K", либо "P", и в зависимости от этого запускает соответствующую программу.

if ‘%1’= =’K’ F:WORKKEYTRENTRK

if #%1#= =## echo ФОРМАТ: iftren K (или iftren P)

Вместо замещаемого параметра %1 подставляется либо "K", либо "P", либо пустая строка, если мы запустили BAT-файл без параметров. Первый IF проверяет, был ли параметр "K", и если да, то запускает программу «Клавиатурный тренажер». Второй IF проделывает то же самое для параметра "P" и программы TURBO. Третий IF проверяет, не был ли запущен BAT-файл без параметров, и если да, то выдает справку о правильном формате.

Задание. Создайте файл ifdir.bat, который бы в зависимости от введенного параметра командной строки ("S", "P" или "W") вызывал бы команду DIR с соответствующим параметром, а при отсутствии параметров выдавал бы напоминание о формате команды.

Команда IF часто используется вместе с GOTO.

Пример 6. Изменим файл iftren.bat из Примера 5, так чтобы перед запуском программы очищался экран и выводилось соответствующее сообщение:

if *%1*= =** echo ФОРМАТ: iftren K (или iftren P)

echo Загружаю TURBO PASCAL.

echo Загружаю программу TRK.

Задание. Создайте файл iftren.bat из Примера 6 и проверьте три варианта выполнения этого командного файла.

б) Проверка существования файла на диске.

ФОРМАТ: IF [NOT] EXIST [ ][ ]

Этот вариант команды IF проверяет, имеется ли на диске файл с заданным именем и если да, то выполняется .

Пример 7. Составим файл ifexist.bat, который получает в качестве входного параметра имя файла, и если такой файл уже существует, то копирует его в файл с тем же именем, а расширением $$$. Если файл не существует, то выдается сообщение об этом:

Читайте также:  Plantronics m165 marque 2

if exist %1 goto yes

echo Такой файл не существует!

Задание. Создайте файл ifexist.bat из Примера 7 и проверьте два варианта выполнения этого командного файла.

8. Циклическая подстановка

В языке BAT-файлов нет полноценной команды для определения циклов. Однако, есть команда для циклического выполнения определенной команды для всех файлов из указанного множества.

ФОРМАТ: FOR %% IN ( ) DO

Параметр — это любая допустимая команда DOS. В параметре могут быть использованы любые имена (имена файлов или символьные строки), разделенные знаком пробела. Локальный аргумент может состоять только из одной латинской буквы. Имена из последовательно присваиваются локальному аргументу.

Примеры правильных заданий :

(A B C D E F G H I J)

Пример 8. Последовательный вывод на экран содержимого всех TXT-файлов текущей директории.

for %%f in (*.txt) do type %%f

В команду type %%f вместо %%f поочередно подставляются имена всех TXT-файлов текущего каталога.

Пример 9. Файл ABFG.bat позволяет создать четыре каталога: CAT-A, CAT-B, CAT-F, CAT-G, а также скопировать в них файлы, которые начинаются соответственно с A, B, F, G.

for %%c in (A B F G) do md cat-%%c

for %%f in (A*.*) do copy %%f cat-A

for %%f in (b*.*) do copy %%f cat-b

for %%f in (f*.*) do copy %%f cat-f

for %%f in (g*.*) do copy %%f cat-g

Задание. Создайте командный файл ABFG.bat и проверьте его работу.

Составьте другой командный файл, с помощью которого можно удалить все каталоги, созданные файлом ABFG.bat.

9. Вызов BAT-файла из другого BAT-файла

Из тела одного BAT-файла можно вызвать другой. Это может потребоваться, например, если нужно в команде циклической подстановки выполнить не одну, а несколько команд. Существует два способа вызова одного командного файла из другого.

Читайте также:  Разные шрифты для стима

а) В командном файле пишется имя вызываемого BAT-файла (с параметрами, если они есть). При этом управление передается в вызываемый BAT-файл и после достижения его конца НЕ возвращается в главный BAT-файл. Чтобы такой возврат произошел, нужно

б) Вызывать BAT-файл с помощью команды CALL:

Задание. Создайте BAT-файл с вызовом другого BAT-файла. Сначала используйте вариант вызова без, а затем с использованием команды CALL.

| следующая лекция ==>
Рассмотрение технологии создания простой однотабличной базы данных | Важность полесской экспедиции Луизы Арнер Бойд сегодня

Дата добавления: 2017-02-24 ; просмотров: 609 | Нарушение авторских прав

Я написал следующий скрипт:

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

2 ответа 2

Самый простой вариант

P.S. не для "Windows XP", т.к. в поставку не входит forfiles.exe

Если требуется список файлов с путями, то ">nul" — просто удалить.

Либо без findstr (что будет точнее для поиска именно файла, а не просто совпадения строки):

Также, если потребуется список файлов с путями, то удалить ">nul 2>&1 " и "&&echo file found||echo file not found"

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.10.35756

Проверка файла как-то так:

Начну с конца: cmd не поддерживает работу с датами ни в каком виде.
Дату последнего изменения файла получить можно, но это будет дата в текстовом виде. Дальше нужно вручную выделять все составляющие даты и с помощью скудных возможностей set /a и кучи if вычислять была она позже 4 часов или нет. Сделать можно, но это будет . "не технологично" 🙂
В свое время я писал скрипт на bat переводящий дату в timestamp и обратно. Могу поискать, если заинтересует.
Я бы предложил вам использовать скрипт на powershell, vbs, js — все они умеют работать с датами. Реализовать на них вашу задачу довольно просто.

Читайте также:  Программа для apc smart ups 1000

Проверка существования файлов и подпапок в заданной папке:

Если служба "отваливается" путем завершения процесса службы, то проще проверять существует ли запущенный процесс с помощью tasklist и ее фильтров. Смотрите tasklist /?

set "indir=c:papka"
:: Проверка существования файлов:
for /f "tokens=* delims=" %%a in (‘dir /b /a-d "%indir%*" ‘) do (
echo.Есть файл: %%

fa
)
:: Проверка существования каталогов:
for /f "tokens=* delims=" %%a in (‘dir /b /ad "%indir%*" ‘) do (
echo.Есть каталог: %%

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.