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

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

Ответить
Настройки темы
CMD/BAT - [решено] Directory printer (делает список файлов/папок)

Старожил


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

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


Изменения
Автор: shadowbat
Дата: 03-07-2010
как реализовать принтер дерева файлов/папок в txt файл?

условия задачи:
1. BAT файл должен уметь делать список файлов по маске (например *.txt или *.*)

2. BAT файл должен уметь делать список папок и естественно подпапок

3. можно ли реализовать работу из текущей папки?
т.е. откуда запустили BAT, там он листинг и проводит (+ в подпапках тоже проводит листинг). т.е. подставляет путь своего местонахождения в переменную задания пути.
а также если возможно чтобы умел работать и с подстановкой пути. (например по умолчанию переменная x=CurrentDir, но пользователь туда может вписать свой путь например C:\Program Files). с этим путем BAT и будет работать.

получается маску файлов реализовать отдельной строкой нужно?
чтобы работало например так: x=CurrentDir, y=*.txt (либо например *.* по желанию пользователя) итого: x+y=CurrentDir:\*.txt

4. у пользователя должен быть выбор на п.1. или п.2.
это можно реализовать либо оператором case и чтобы BAT спрашивал "что выполнить? листинг файлов или листинг папок?"
либо реализовать любым друим способом

5. учесть работу с русскими именами (через chcp 1251 chcp 866 либо иным способом)

Specially for amel27: я 3-4 года пользуюсь каким то сторонним Directory printer'ом, но ваше решение меня просто убило. настолько простое, что добавив капельку функционала - получится мощный и полезный инструмент, а главное простой!

пример простенького листера файлов ( "резак" длинных имен с сохранением расширения) от amel27
Код: Выделить весь код
set $m=%CD%
set $f=dir.txt
set mp=500

(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"&call echo.%%b:~0,%mp%%%%%~xa))>"%$f%"

Отправлено: 07:30, 19-06-2010

 

Googler


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

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


shadowbat, 1-4. ВСЁ это делает одна единственная команда DIR, т.е. весь смысл батника сводится к передаче ей нужных параметров: файлы/папки (параметр /A), начальная папка, маска и т.п. Варианты: через блок переменных, через параметры командной строки батника, интерактивно пользователем... как нужно?.. и нужно ли, если можно просто набрать в командной строке DIR с нужными параметрами?

Цитата shadowbat:
реализовать принтер дерева »
в качестве альтернативы DIR гляньте команду TREE - она не способна выводить файлы по маске, но каталоги печатает афигенно
Код: Выделить весь код
Tree "%ProgramFiles%" /A >tree.txt
Цитата shadowbat:
пример простенького листера файлов от amel27 »
не вводите народ в заблуждение - это не "листер файлов", а "резак" длинных имен с сохранением расширения... т.е. форматирование вывода всё того же DIR
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 19-06-2010 | #2



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

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


Старожил


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

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


одно из решений:
Принтер Дерева папок:
Код: Выделить весь код
Tree "%CD%" >tree.txt

Отправлено: 10:27, 03-07-2010 | #3


Пользователь


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

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


shadowbat,

а немножко фантазии?

Код: Выделить весь код
Echo off&Chcp 866&Title L I S T I N G & Cls
set $dir=%1
set $mask=%2
set $list=%3
set $deep=%4

if "%$list%"=="" call :input
if "%$dir%"=="" set $dir=%CD%
if "%$list%"=="1" (set $list=D) else set $list=-D
if "%$deep%"=="1" set $deep=^/s

Dir /A%$list% %$deep% /d %$dir%\%$mask% > %$dir%\strr.lst

set /p dspl=Вывести листинг на экран? 1-да:
if "%dspl%" NEQ "1" (goto :eof) else type %$dir%\strr.lst

pause&goto :eof

:input
set /p $dir=Введите путь к директории, по умолчанию текущая: 
set /p $mask=Укажите маску:
set /p $list=Укажите тип вывода, "1"-каталоги, "2"-файлы: 
set /p $deep=Обрабатывать подкаталоги, "1"-да, "2"-нет:
Пример запуска из Run или CMD:
Код: Выделить весь код
 listing.bat "F:\2\part_name\dir_0014" *.* 1 1 

Последний раз редактировалось deepred, 04-07-2010 в 14:16.

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

Отправлено: 14:11, 03-07-2010 | #4


Старожил


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

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


Код: Выделить весь код
set $m=%CD%
set $f=dir.txt
set mp=500

(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"&call echo.%%b:~0,%mp%%%%%~xa))>"%$f%"
код не работает с файлами, у которых есть символ "&" в имени файла
например если в папке два файла:
file.txt
file & file.txt
то в dir.txt будет только file.txt
как то можно, чтобы в dir.txt записались оба файла?

Отправлено: 13:50, 13-12-2015 | #5


Ветеран


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

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


Код: Выделить весь код
@echo off

set "$m=%CD%"
set "$f=dir.txt"
set "mp=500"

(
for /f "delims=" %%a in ('dir/b/s "%$m%"') do @(
 set "b=%%~dpna"
 cmd/v/c echo.!b:~0^^,%mp%!%%~xa
)
)>"%$f%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:32, 13-12-2015 | #6


Старожил


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

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


Georgio спасибо, помогло

Отправлено: 20:03, 13-12-2015 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - Как вывести список папок и файлов в текстовый файл? Vowan Программное обеспечение Windows 15 23-11-2013 15:29
Advanced Directory Printer 1.55 OSZone Software Новости программного обеспечения 0 12-11-2009 21:30
Получить список пользователей из activ directory kynabo Microsoft Windows NT/2000/2003 1 28-05-2008 09:05
Заполнить список пользователей в sharepoint servise 3 из active directory kynabo Вебмастеру 1 16-05-2008 02:56
Список компов в сети? Список открытых папок на компе? DANTIST Программирование и базы данных 3 12-06-2003 10:05




 
Переход