|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл |
|
CMD/BAT - [решено] Нужен батник для сканирования папок и записи результатов в файл
|
Ветеран Сообщения: 2153 |
Профиль | Отправить PM | Цитировать
Есть набор папок, в каждой из которых расположен один файлик (чаще всего exe-шник). Нужно, с помощью батника просканировать эти папки и результаты получить в виде текстового файла или батника с таким содержимым:
;Название папки 1 "исполняемая команда" "Название папки 1"\"название файла в папке 1" "параметры" ;Название папки 2 "исполняемая команда" "Название папки 2"\"название файла в папке 2" "параметры" ... ;Название папки N "исполняемая команда" "Название папки N"\"название файла в папке N" "параметры" P.S. Папки и файлы в приведённом шаблоне на самом деле порядковых номеров не имеют, а имеют различные названия. Их нумерация приведена только для наглядности. |
|
Отправлено: 13:33, 17-09-2010 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Nun-Nun, мало вводных данных, поэтому:
|
Отправлено: 17:56, 20-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2153
|
Профиль | Отправить PM | Цитировать Немного переделал скрипт (убрал кавычки и привязку к конкретной папке), теперь почти то, что надо. Поправьте, если я не прав.
@Echo Off rem Set Source=C:\Source Set ExecutableFile=start /wait .\ Set Params=/Q /O /N /Z For /F "Tokens=*" %%A In ('Dir /B /AD') Do ( For /F "Tokens=*" %%B In ('Dir /B %%A\*.exe 2^>nul') Do ( Echo ;%%A>>list.cmd Echo %ExecutableFile%%%A\%%B %Params%>>list.cmd ) ) Echo. Echo Названия папок и файлов скопированы в файл list.cmd Echo. Pause 1) можно ли сделать, чтобы итоговый файл list.cmd сохранялся с русской кодировкой 866 ? 2) не могли бы Вы в скрипте прописать не только exe-файлы, но и msi-файлы? а то иногда, кроме exe-шников и msi попадаются. P.S. Для большей информативности вводных данных: 1) глубина вложенности папок может быть более одного уровня; 2) исполняемая команда exe-файлов выглядит так: start /wait .\ 3) параметры для exe-файлов выглядят так: /Q /O /N /Z Командная строка для msi-файлов выглядит несколько иначе: "исполняемая команда" "Название папки" "параметры" 4) исполняемая команда выглядит так: start /D.\ 5) параметры выглядят так: /wait MSIEXEC /I "имя msi-файла" ALLUSERS=TRUE REBOOT=SUPPRESS /QN |
------- Последний раз редактировалось Nun-Nun, 21-09-2010 в 16:01. Отправлено: 14:54, 21-09-2010 | #3 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Nun-Nun:
@Echo Off Set ParamsExe=/Q /O /N /Z Set ParamsMsi=ALLUSERS=TRUE REBOOT=SUPPRESS /QN Del /F /Q list.cmd 1>nul 2>&1 For /F "Tokens=*" %%A In ('Dir /S /B /AD') Do ( For /F "Tokens=*" %%B In ('Dir /B "%%A\*.exe" "%%A\*.msi"') Do ( Echo ::%%~nA>>list.cmd If /I "%%~xB"==".exe" (Echo Start /Wait "" "%%A\%%B" %ParamsExe%>>list.cmd) If /I "%%~xB"==".msi" (Echo Start /Wait "" MsiExec /I "%%A\%%B" %ParamsMsi%>>list.cmd) ) ) |
|
Отправлено: 17:18, 21-09-2010 | #4 |
Ветеран Сообщения: 2153
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
Иду пробовать скрипт. |
||
------- Отправлено: 20:46, 21-09-2010 | #5 |
Ветеран Сообщения: 2153
|
Профиль | Отправить PM | Цитировать El Sanchez,
Есть ещё одна просьба: поскольку на основе работы скрипта создаётся bat-файл, в начале и конце бывает необходимо какое-нибудь сообщение. Например, перед началом выполнения скрипта выдаётся текст шапки батника и что-нибудь типа "Идёт считывание и запись имён папок и файлов"), а в конце - что-нибудь типа "Процесс завершён, результат находится в файле List.bat". Можно ли соответствующие поля для текста добавить в скрипт? |
------- Отправлено: 22:58, 21-09-2010 | #6 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Nun-Nun, можно сделать как вы хотите (выделено красным), либо выводить данные сообщения в консоль (выделено зеленым)
@Echo Off Set ParamsExe=/Q /O /N /Z Set ParamsMsi=ALLUSERS=TRUE REBOOT=SUPPRESS /QN Title Идёт считывание и запись имён папок и файлов Echo Идёт считывание и запись имён папок и файлов... Del /F /Q list.cmd 1>nul 2>&1 For /F "Tokens=*" %%A In ('Dir /S /B /AD') Do ( For /F "Tokens=*" %%B In ('Dir /B "%%A\*.exe" "%%A\*.msi"') Do ( Echo ::%%~nA>>list.cmd If /I "%%~xB"==".exe" (Echo Start /Wait "" "%%A\%%B" %ParamsExe%>>list.cmd) If /I "%%~xB"==".msi" (Echo Start /Wait "" MsiExec /I "%%A\%%B" %ParamsMsi%>>list.cmd) ) ) Title Процесс завершён, результат находится в файле List.cmd Echo Процесс завершён, результат находится в файле List.cmd |
Отправлено: 13:54, 22-09-2010 | #7 |
Ветеран Сообщения: 2153
|
Профиль | Отправить PM | Цитировать El Sanchez,
Благодарю! Всё работает. |
------- Отправлено: 15:23, 22-09-2010 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Батник + групповые политики | Dudee | Microsoft Windows NT/2000/2003 | 21 | 09-06-2010 10:23 | |
CMD/BAT - Нужен батник для создания каталога с текущей версией ОС | Скуб | Скриптовые языки администрирования Windows | 4 | 11-05-2010 14:26 | |
CMD/BAT - [решено] нужен батник который бы пинговал диапазон ip и записывал результат в файл | dvassilyev | Скриптовые языки администрирования Windows | 7 | 08-05-2009 14:33 | |
Разное - Батник и сеть | _Gans_ | Программирование и базы данных | 3 | 20-11-2008 10:19 | |
[решено] .NET 3.0 нужен. А нужен ли .NET 2.0 для шаблонного сервера? | LevT | Автоматическая установка Windows 2000/XP/2003 | 7 | 09-07-2007 14:29 |
|