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

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

Ответить
Настройки темы
CMD/BAT - Создать общий списк файлов в директориях

Новый участник


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

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


Создать общий списк файлов в директориях:
В качестве параметров принимать имена директорий. В каждой директории
искать файл files.bbs в котором хранится список имен файлов. В текущей
директории создать файл all_files.txt в котором будет хранится имена
директорий и файлы в них находящиеся. При отсутствии директории - выдавать
ошибку, но продолжать обработку следующей директории. Если файла files.bbs
нет в директории - создать его.

Заранее Благодарен !!!

Отправлено: 00:39, 14-01-2012

 

Аватара для zion87

Старожил


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

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


antonyk, вот такое решение будет работать но только с одной директорией(параметром), как сделать несколько директорий "компактным кодом" - не знаю (ждите ответов гуру )
Код: Выделить весь код
@echo off
If '%1==' GoTo :Eof
if exist "%1" for /f "delims=*" %%a in (' dir /s /b "%1\*.*" ^|findstr /bev /c:files.bbs /c:all_files.txt ') do echo %%a>>"%1\all_files.txt" && (
  if not exist "%1\files.bbs" for /f "delims=*" %%b in (' dir /b "%1\*.*" ^|findstr /bev /c:files.bbs /c:all_files.txt ') do echo %%b>>"%1\files.bbs" 
)
if not exist "%1" echo error not found && pause
goto:eof
при условии, что я правильно понял условие:
  • директории нет - error not found
  • отсутствует files.bbs - создаем files.bbs и в нем список файлов из текущей директории
    Код: Выделить весь код
    file1.ini
    file2.ini
    и так далее ...
  • создается файл all_files.txt - в нем файлы с путями
    Код: Выделить весь код
    c:\file1.ini
    c:\file2.ini
    и так далее ...
вообщем я хочу сказать, что если вы хотите задать два параметра и более, то придется несколько раз скопировать вот это в бат
Код: Выделить весь код
if exist "%1" for /f "delims=*" %%a in (' dir /s /b "%1\*.*" ^|findstr /bev /c:files.bbs /c:all_files.txt ') do echo %%a>>"%1\all_files.txt" && (
  if not exist "%1\files.bbs" for /f "delims=*" %%b in (' dir /b "%1\*.*" ^|findstr /bev /c:files.bbs /c:all_files.txt ') do echo %%b>>"%1\files.bbs" 
)
if not exist "%1" echo error not found && pause
заменяя %1 на %2,%3,%4,%5 - если вы сделаете для 5 директорий, то можно будет вводить и одну и две и три и т.д. до пяти включительно и все равно будет работать...

Последний раз редактировалось zion87, 14-01-2012 в 10:55.

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

Отправлено: 09:32, 14-01-2012 | #2



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

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


Новый участник


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

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


Конечно спасибо за ответ, но что-то не видно что он делает

Отправлено: 11:41, 14-01-2012 | #3


Аватара для zion87

Старожил


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

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


antonyk, из командной строки -файл.bat "c:\путь к папке"
делает это
  • директории нет - выдает 'error not found'
  • если в директории отсутствует files.bbs - создаем files.bbs и в нем список файлов из текущей директории
  • создается файл all_files.txt - в нем файлы из текущей директории с путями
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:14, 14-01-2012 | #4


Новый участник


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

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


При изменении на %2.... не работает вообще и если не секрет что оно должно сделать если поменять ?

Отправлено: 14:59, 14-01-2012 | #5


Новый участник


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

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


Если можешь сделай еще на такую тему батничек.


Слить файлы в один:
В качестве параметров принимать имена файлов и слить все эти файлы
в файл имя которого задано последним. Если такой файл уже существует -
запросить у пользователя разрешение на перезавись(см. команду choice). Если
хоть один из файлов несуществует - завершить работу с ошибкой и выводом
помощи

Отправлено: 15:16, 14-01-2012 | #6


Аватара для zion87

Старожил


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

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


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

вопрос по второму что значит
Цитата antonyk:
Слить файлы в один: »
- я знаком только со склейкой текстовых файлов copy 1.txt + 2.txt(ну или rar), как то не очень понятен вопрос, далее
Цитата antonyk:
Если
хоть один из файлов несуществует »
из каких файлов не существует ???
можно на пальцах объяснить к примеру на диске d:\есть папка 1 нужно из этой папки и т.д.

Последний раз редактировалось zion87, 14-01-2012 в 15:26.


Отправлено: 15:17, 14-01-2012 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Как создать общий доступ к папке? winner82 Microsoft Windows 2000/XP 25 09-04-2012 16:54
V. 2010 - как создать общий календарь для всей организации? God-of-Chaos Microsoft Exchange Server 2 26-05-2011 15:32
Не могу создать скрытый общий ресурс $ fish99 Microsoft Windows NT/2000/2003 2 13-02-2010 00:10
vsftpd: нет прав на удаления файлов в домашних директориях steepz Программное обеспечение Linux и FreeBSD 6 09-09-2006 16:37
Групповая политика в Активных директориях Vi-P Microsoft Windows NT/2000/2003 3 15-03-2006 17:45




 
Переход