Показать полную графическую версию : Создать общий списк файлов в директориях
Создать общий списк файлов в директориях:
В качестве параметров принимать имена директорий. В каждой директории
искать файл files.bbs в котором хранится список имен файлов. В текущей
директории создать файл all_files.txt в котором будет хранится имена
директорий и файлы в них находящиеся. При отсутствии директории - выдавать
ошибку, но продолжать обработку следующей директории. Если файла files.bbs
нет в директории - создать его.
Заранее Благодарен !!!
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 директорий, то можно будет вводить и одну и две и три и т.д. до пяти включительно и все равно будет работать...
Конечно спасибо за ответ, но что-то не видно что он делает
antonyk, из командной строки -файл.bat "c:\путь к папке"
делает это
директории нет - выдает 'error not found'
если в директории отсутствует files.bbs - создаем files.bbs и в нем список файлов из текущей директории
создается файл all_files.txt - в нем файлы из текущей директории с путями
При изменении на %2.... не работает вообще и если не секрет что оно должно сделать если поменять ?
Если можешь сделай еще на такую тему батничек.
Слить файлы в один:
В качестве параметров принимать имена файлов и слить все эти файлы
в файл имя которого задано последним. Если такой файл уже существует -
запросить у пользователя разрешение на перезавись(см. команду choice). Если
хоть один из файлов несуществует - завершить работу с ошибкой и выводом
помощи
antonyk, по первому запросу вам нужно искать с нескольких директориях? и директории вводите сразу при запуске бат из командной строки? или директории известны заранее и их можно в бат записать заранее??
вопрос по второму что значит
Слить файлы в один: » - я знаком только со склейкой текстовых файлов copy 1.txt + 2.txt(ну или rar), как то не очень понятен вопрос, далее Если
хоть один из файлов несуществует »
из каких файлов не существует ???
можно на пальцах объяснить к примеру на диске d:\есть папка 1 нужно из этой папки и т.д.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.