Cmd перебрать все файлы в папке. Bat файлы, примеры

REALTIME

Софт

Все о BAT файлах

   Пакетные либо batch файлы это обыденные текстовые файлы, содержащие наборы команд интерпритатора и имеющие расширение bat либо cmd (cmd работают лишь в ОС семейства NT). Редактировать такие файлы можно при помощи блокнота либо хоть какого другого текстового редактора.
В этом FAQ собраны советы, которые были протестированы на Windows 2000. Некие команды и переменные, использованные при написании примеров, отсутствуют в 9х.

Как сделать batch файл? 

Откройте блокнот и наберите две последующих строки:

@echo This batch file
@pause

Выберите Файл — Сохранить как, выберите Тип файла — Все файлы, в поле Имя файла введите 1.bat и сохраните его в корне диска С, к примеру. Сейчас откройте диск С и запустите файл 1.bat. На экран будет выведено две строки.

This batch file
Нажмите всякую кнопку для продолжения…

После нажатия хоть какой клавиши окно закроется, т.к. bat-файл выполнен.
Обратите внимание, что знак собаки перед каждой командой в bat-файле показывает на то, что саму команду выводить на экран не нужно, а необходимо вывести лишь итог ее работы. Чтоб поэкспериментировать удалите знак собаки из начала каждой строчки, сохраните и запустите приобретенный bat файл.

Команды, используемые в bat файлах 
 
Список команд, которые можно употреблять в bat файлах, можно просмотреть, введя в командной строке (Пуск — Выполнить — cmd для Windows семейтва NT либо Запуск — Выполнить — command для линейки 9х) команду

help

Результат работы help — перечень доступных команд с короткими пояснениями к ним. Чтоб получить наиболее подробную информацию по интересующей команде введите в командной строке help имя_команды. К примеру, чтоб получить подробную справку по ключам команды AT выполните последующую команду:

help AT

В итоге, на экран будет выведен перечень ключей для пуска команды AT из bat файла.
Если bat файл исполняется под управлением Windows (не в чистом DOS-е), то из него можно запускать любые приложения либо открывать файлы. К примеру, необходимо автоматом открыть лог-файл работы bat файла по завершении его работы. Для этого довольно включить в bat файл крайней строчкой последующую команду:

start имя_файла.txt

Результатом выполнения данной нам команды станет открытие файла имя_файла.txt, а сам bat файл завершит свою работу. Таковой метод неплох, ежели лог-файл маленького размера, по другому Блокнот откажется его открывать, предложив употреблять WordPad. Но эта неувязка так же решаема, что и будет показано в дальнейших примерах.

Как заавтоматизировать пуск bat файлов 
 
Очень нередко нужно заавтоматизировать пуск bat файлов для выполнения ими рутинных операций. Для пуска bat файлов по расписанию более подступает Планировщик, входящий в обычную поставку Windows. С это помощью можно чрезвычайно гибко настроить пуск пакетного файла в определенные дни либо часы, с определенным интервалом. Можно сделать несколько расписаний и т.д.
Для локального пуска batch файлов можно воспользоваться решениями от третьих компаний, благо платных и бесплатных альтернатив обычному Планировщику великое множество.
Batch файлы так же могут употребляться как логин-скрипты в доменах. При таком их использовании они будут исполняться при каждом входе юзера в сеть не глядя на его желание. С их помощью можно заавтоматизировать сбор инфы о машинках либо о программном обеспечении, установленном на компах юзеров, принудительно поменять опции Windows, устанавливать незаметно для юзера программное обеспечение и заавтоматизировать решение остальных задач, ручное выполнение которых заняло бы чрезвычайно много времени.

Читайте также  Дизайн Интерьера 3D 3.25

Как сделать файл с произвольным именованием из bat файла 
 
Для сотворения файла в процессе выполнения пакетного файла употребляется знак перенаправления. Он смотрится так:

>

Т.е. чтоб сделать файл необходимо перенаправить поток с экрана в файл. Сделать это можно при помощи последующей команды:

@echo Start file>C:1.txt

После выполнения данной для нас команды в корне диска С будет сотворен текстовый файл со строчкой Start file.
При разработке файла в его имени можно применять системные переменные либо их части. К примеру, можно сделать файл-отчет о работе bat файла с именованием, равным дате пуска bat файла. Для этого можно применять последующие строчки в bat файле.

set datetemp=%date:~-10%
@echo .>%SYSTEMDRIVE%%DATETEMP%.txt

Эти две строчки работают последующим образом. Поначалу в памяти создаем переменную datetemp, которой присваиваем 10 знаков справа налево от системной переменной DATE. Таковым образом, сейчас во временной переменной datetemp содержится лишь текущая дата. Следующией строчкой перенаправляем вывод знака точка в файл, имя которого берем из переменной datetemp, а расширение txt указываем очевидно. Файл будет сотворен на системном диске компа, где выполняется bat файл.
При сборе админом инфы о компах в сети будет удобнее добавить к имени файла имя компа. Это просто можно сделать при помощи последующей команды:

@echo .>C:FolderName%COMPUTERNAME%.txt

Эта команда в ходе выполнения пакетного файла создаст на диске С текстовый файл с именованием того компа, на котором выполняется пакетный файл.
Для сотворения файла с определенным именованием можно употреблять любые системные переменные, или сделать свои, на базе системных переменных и/или остальных данных.

Как сделать папку из bat файла 
 
Для сотворения папки употребляется команда MKDIR либо ее сокращенный аналог MD. Для сотворения папки из bat файла необходимо употреблять последующую команду:

MD FolderName

После выполнения таковой команды будет сотворена папка FolderName в папке, откуда запущен bat файл. Чтоб сделать файл в отличном от пуска bat файла месте, к примеру в корне диска D, используйте явное указание расположения новейшей папки. Команда будет смотреться так: 

MD D:FolderName

При разработке папок можно воспользоваться системными переменными. К примеру, можно сделать в корне диска D папку с именованием текущего юзера. Для этого пригодится переменная %USERNAME%, а команда будет смотреться последующим образом:

MD D:%USERNAME%

Можно еще наиболее усложнить команду и сделать папку с именованием текущего юзера на системном диске его компа. Команда для этого будет смотреться так:

Читайте также  Устройство современного процессора компьютера

MD %SYSTEMDRIVE%%USERNAME%

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

set datetemp=%date:~-10%
MD %SYSTEMDRIVE%%datetemp%

Эта конструкция работает последующим образом.
Первая команда делает в памяти переменную datetemp, которая будет уничтожена по окончании работы bat файла. То тех пор, пока bat файл не окончил свою работу есть возможность оперировать со значением данной переменной. Переменной datetemp присваивается 10 знаков справа налево от системной переменной DATE, т.е. от текущей даты. Переменная DATE имеет формат Дн ДД.ММ.ГГГГ. 1-ые знаки слева — имя дня недельки и потому мы их отбрасываем и присваиваем временной переменной datetemp лишь текущую дату.
Этим не ограничивается перечень способностей при разработке папок. Вы сможете опрерировать переменными так, как комфортно Для вас, создавая папки с неповторимыми, просто читаемыми наименованиями. Получить перечень всех переменных можно при помощи команды SET.

Как перенаправить итог выполнения команд в файл

Часто, при выполнении сложного bat файла в автоматическом режиме проверить результаты его работы бывает проблемно по почти всем причинам. Потому проще записывать результаты работы команд batch файла в текстовый файл (лог-файл). а позже анализировать корректность работы bat файла по этому логу.
Перенаправить итог работы команд bat файла в лог-файл довольно просто. Дальше будет показано, как это можно сделать.
Создайте bat-файл последующего содержания (скопируйте эти строчки в Блокнот и сохраните файл с расширением bat):

@echo off
echo Start %time%
echo Create test.txt
echo test>C:test.txt
echo Copy Test.txt to Old_test.txt
copy C:test.txt C:Old_test.txt
echo Stop %time%

Первая строчка отключает вывод самих команд. Таковым образом, в лог-файл будут записаны лишь результаты их выполнения.
Вторая строчка записывает в лог-файл время начала работы пакетного файла.
Третья строчка записывает в лог-файл пояснение того, что последующая команда создаст файл test.txt
Команда из четвертой строчки делает файл test.txt с корне диска С. Файл создается для примера. Эта команда записывает в файл C:test.txt слово test
Пятая строчка выводит в лог-файл пояснение, что последующая команда выполняет копирование файла из 1-го места в другое.
Команда в 6-ой строке копирует сделанный файл C:test.txt в файл C:Old_test.txt, т.е. создается копия файла под новеньким именем.
Последняя, седьмая строчка содержит команду вывода времени завершения работы пакетного файла. В сумме с записью в лог-файл времени начала работы пакетного файла эти два значения времени дают возможность оценить время работы пакетного файла.

Сохраните этот пакетный файл под именованием, к примеру, 1.bat
Предположим, что отчет о работе пакетного файла мы бы желали хранить в отдельной папке и каждый день записывать отчет с новеньким именованием файла, чтоб была возможность в хоть какой из дней обратиться к логам за прошлые дни. При этом, имя лог-фала хотелось бы иметь в виде даты работы пакетного файла. Чтоб все это воплотить сделаем на диске С (например) папку с именованием LOG, т.е. полный путь к ней будет смотреться C:LOG. Сделанный пакетный файл 1.bat будем запускать последующей командой:

Читайте также  Исправление ошибки «DirectX Setup Error An internal error occurred» в играх

1.bat>C:LOG%date~-10%.txt

Если пакетный файл будет запускаться из Планировщика, то необходимо указать полный путь с bat-файлу. Помните, что ежели в пути есть пробелы, то нужно употреблять или кавычки, или формат 8.3. Т.е., ежели путь к bat-файлу C:Program Files1.bat, к примеру, то в командной строке Планировщика для пуска bat-файла необходимо указать одну из последующих строк:

«C:Program Files1.bat»>C:LOG%date~-10%.txt
C:Progra~11.bat>C:LOG%date~-10%.txt

После пуска файла 1.bat в папке C:LOG будет сотворен файл с именованием, равным дате пуска bat-файла, к примеру, 13.01.2004.txt Это и будет отчет о работе пакетного файла 1.bat
Запуск bat-файла, пример которого показан в первом листинге вверху странички, указанной выше командой, приведет к созданию лог-файла такового содержания:

Start 19:03:27,20
Create test.txt
Copy Test.txt to Old_test.txt
Скопировано файлов: 1.
Stop 19:03:27,21

Таким образом, для выполнения перенаправления результатов работы bat-файла в лог-файл необходимо употреблять знак перенаправления > Синтаксис таков:

ПутьИмяФайла.bat>ПутьИмяЛогФайла.txt

Расширение лог-файла может быть хоть каким. При желании, отчет о выполнении пакетного задания можно оформить даже в виде странички html (соответствующие теги могут быть выведены в лог-файл так, как выводились комменты в примере 1.bat) и скопировать его на корпоративный сервер.

Как автоматом ответить на запрос о подтверждении 
 
Некоторые команды при выполнении требуют доказательства потенциально небезопасного деяния. К примеру, такие команды как format либо del предварительно запросят доказательства на предстоящее выполнение. Ежели одна из этих команд выполняется в пакетном файле, то запрос на доказательство приостановит выполнение пакетного файла и он будет ждать от юзера выбора 1-го из предложенных вариантов. При этом, ежели итог выполнение пакетного файла перенаправлен в лог-файл, то юзер не увидит запроса на доказательство и batch файл будет смотреться зависшим.
Для исправления таковых проблем можно перенаправить подходящий ответ в команду. Т.е. выполнить обратное действие для перенаправления вывода результатов работы команды в файл.
Посмотрим на примере как смотрится запрос на доказательство потенциально небезопасного деяния. Сделаем на диске С, к примеру, папку Folder. Сделаем в ней либо скопируем в нее два всех файла. Дальше, откроем командную строчку и выполним последующую команду:

del C:Folder

Эта команда обязана удалить все файлы из указанной папки. Но предварительно будет выдан запрос для доказательства последующего содержания:

C:Folder*, Продолжить [Y(да)/N(нет)]?

Выполнение команды будет остановлено до тех пор, пока не будет нажата или кнопка Y, или кнопка N. При выполнении пакетного файла в автоматическом режиме, его выполнение остановится.
Чтобы избежать этого используем перенаправление. Перенаправление осуществляется при помощи символа

Оставьте комментарий

Adblock
detector