Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Определение атрибута файла & проверка наличия процесса (http://forum.oszone.net/showthread.php?t=148319)

user_123 18-08-2009 21:32 1196979

Определение атрибута файла & проверка наличия процесса
 
Подскажите пожалуйста, как через bat-файл:

1) проверить, имеет ли определённый файл атрибут "только чтение" и если имеет, присвоить значение преременной.

2) проверить, запущен ли определённый процесс и если он запущен, присвоить значение переменной.

Заранее благодарен.

amel27 19-08-2009 05:05 1197179

Код:

Attrib "File.txt"|>Nul FindStr /BIR ".....R"&& Set RO=Y
Код:

TaskList|>Nul FindStr /BI "notepad.exe"&& Set PE=Y

user_123 19-08-2009 11:24 1197326

amel27, спасибо, буду пробовать...

Hardip 18-11-2010 23:10 1546004

А можно немного прокомментировать код, или посмотерть что это. Мне просто нужно системный аттрибут, это я нашёл, но не понял как он количство переменной передает?

amel27 19-11-2010 03:44 1546108

Цитата:

Цитата Hardip
можно немного прокомментировать код »

Код:

Attrib "File.txt"    - выводит атрибуты файла
|                    - перенаправляет вывод следующей команде
FindStr /BIR ".....R" - ищет во входном тексте нужный атрибут
&&                    - если "успех", выполняется следующая команда
Set RO=Y              - присваивает переменной RO значение Y


Hardip 19-11-2010 09:46 1546195

Спасибо! Очень грамотно расписано. Воспользоваться командой attrib /?, там нашёл что системные файлы имеют атрибут /s. Для поиска всех системных файлов в текущем каталоге и вывода количества на экран, я прав?
Код:

Attrib "*.*"|>Nul FindStr /BIR ".....R"&& Set %RO=RO+1
echo %RO%


amel27 19-11-2010 11:57 1546296

Hardip, у атрибута S другое положение в строке, отфильтровать только системные файлы:
Код:

Attrib *|FindStr /BR "...S.."

Hardip 19-11-2010 15:21 1546473

Вложений: 2
Цитата:

Цитата amel27
Attrib *|FindStr /BR "...S.." »

Спасибо! Сделал я вот так
Код:

Set Cnt=0  For %%I In (*) Do Attrib "*.*"|FindStr /BR "...S.."&& Set /A Cnt += 1
 Echo %Cnt%

Файлов в катологе 4, и он их имена и выводит, но выводит кол-во файлов почему - то 3. Вот картинки файлов и программы.

amel27 19-11-2010 15:58 1546505

Цитата:

Цитата Hardip
Сделал я вот так »

цикл FOR перебирает все файлы в текущем каталоге, для каждого файла:

- ATTRIB выводит ВСЕ файлы, передает их в FindStr;
- если FindStr находит хотя бы один системный, возвращает TRUE;
- так как хотя бы один есть всегда, инкрементируется CNT

т.е. скрипт подсчитывает общее кол-во файлов в текущем каталоге

вывести количество системных файлов можно так:
Код:

@echo off

Attrib *|FindStr /BR "...S.."|Find /C /V ""
pause>nul


Hardip 19-11-2010 16:05 1546513

Цитата:

Цитата amel27
вывести количество системных файлов можно так: »

Вот это да! Не думал, что можно напрямую - "" передавать поиск.. С /С всё ясно. А параметр /V ведь задает - "Вывод всех строк, не содержащих данную строку". Почему он здесь?

amel27 19-11-2010 16:15 1546520

Hardip, соответственно, подсчет НЕпустых (т.е. всех) строк


Время: 22:33.

Время: 22:33.
© OSzone.net 2001-