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

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

Ответить
Настройки темы
CMD/BAT - Каким образом задать значение переменной число равное кол-ву папок на диске

Аватара для uptk

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


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

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


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

Затруднительный момент №1
Имеем Диск с каталогами H:\
делаю
Код: Выделить весь код
 C:\>DIR H: /A:D /O:D > H:\list.txt
Файл имеет содержание типа
HTML код: Выделить весь код
Том в устройстве H имеет метку DATA Серийный номер тома: BC8E-B34E Содержимое папки H:\ 10.06.2009 10:55 <DIR> XSpider 7.0.947 Russian Full 16.06.2009 11:25 <DIR> Rootkit Revealer 16.06.2009 11:25 <DIR> Rootkit Unhooker 17.06.2009 10:49 <DIR> avz4 24.06.2009 16:23 <DIR> Dameware.NT.Utilities.v6.7.0.7 06.07.2009 12:34 <DIR> ESET-4 08.07.2009 13:52 <DIR> .. 08.07.2009 13:52 <DIR> . 0 файлов 0 байт [b]8 папок[/b] 57*150*357*504 байт свободно

Каким образом задать значение переменной число равное кол-ву папок на диске
SET $NumberFolder=?

-------
Надо зделать усилие, а дальше будет легче.


Отправлено: 15:05, 08-07-2009

 

Старожил


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

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


Можно так:

Код: Выделить весь код
@echo off
rem Подсчет кол-ва подкаталогов в текущем каталоге

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

Set Total=0
for /D %%D in (*.*) do set /a Total+=1

Echo Подкаталогов всего %Total%
Но здесь не будут учтены подкаталоги с аттрибутом hidden
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:21, 08-07-2009 | #2



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

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


Аватара для uptk

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


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

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


Момент №2

Каким образом задать значение переменной,
1) имя самого старого(по времени создания) каталога
или
2) имя первого каталога из файла Н:\list.txt

Вариант 1) и вариант 2) равнозначны по содержанию

-------
Надо зделать усилие, а дальше будет легче.


Отправлено: 17:25, 08-07-2009 | #3


Старожил


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

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


Мой пример был основан на непосредственном чтении текущего каталога. Если чтение сохраненного каталога из файла важнее, то я хочу предупредить, что "полная" версия исполнения команды DIR меняется вместе с виндой и разбираться после обновления, почему скрипт просто не работает (в лучшем случае), а то и делает что-либо нехорошее - будет крайне затруднительно.

Посему предлагаю использовать создание файла с доп. ключом /B, а также устроить инверсию сортировки в ключе /O, что при выполнении C:\>DIR H: /B /A:D /O:-D > H:\list.txt даст более симпотичный результат:
Код: Выделить весь код
TEMP
!
!NotSaved
BootUSB
DMDE
!Tales
WINDOWS
Documents and Settings
Program Files
RECYCLER
Сразу сделаю оговорку - при попытке работать с каталогами, содержащими некореектные (с точки зрения ХР) символы с включенными расширениями - ждите проблемы (в моем примере это каталоги !, !NotSaved, !Tales).

После внесения коррекции в команду DIR достаточно пробежаться по файлу, сохраняя в нужной переменной имя каталога - останется самый последний, который и нужен.

Код: Выделить весь код
@Echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set Disk=H:

dir %Disk% /B /A:D /O-D>%Disk%\List.txt
set Total=0
for /F %%D in (%Disk%\List.txt) do (
set SubDir=%%D
set /a Total+=1
)

echo %Total%: "%SubDir%"
В результате в переменных Total и SubDir находятся кол-во каталогов и самый древний каталог.

Последний раз редактировалось NiOl, 08-07-2009 в 18:02. Причина: Заменил в примере диск C: на H:

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

Отправлено: 18:00, 08-07-2009 | #4


Googler


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

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


Цитата uptk:
Каким образом задать значение переменной число равное кол-ву папок на диске »
ещё вариант:
Код: Выделить весь код
@Echo Off

For /F %%i In ('DIR /B/A:D H:\*^|Find /C /V "\"') Do Set $NumberFolder=%%i
Echo Кол-во каталогов: %$NumberFolder%
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:02, 08-07-2009 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Каким образом добиться расстояния на линии. mexanikus Хочу все знать 9 15-09-2008 05:45
Сменая вкладок. каким образом? Netloger Вебмастеру 14 10-09-2007 16:33
Каким-то образом, удалил сетевую карту. MzM NF Сетевые технологии 4 07-09-2007 09:50
Каким образом раздать права пользователям Pixer Сетевые технологии 12 24-08-2006 14:22
Каким образом можно импортировать БД из FoxPro Serg170580 Хочу все знать 3 28-04-2005 15:34




 
Переход