PDA

Показать полную графическую версию : [решено] Определение атрибута файла & проверка наличия процесса


user_123
18-08-2009, 21:32
Подскажите пожалуйста, как через bat-файл:

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

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

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

amel27
19-08-2009, 05:05
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
amel27, спасибо, буду пробовать...

Hardip
18-11-2010, 23:10
А можно немного прокомментировать код, или посмотерть что это. Мне просто нужно системный аттрибут, это я нашёл, но не понял как он количство переменной передает?

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

Hardip
19-11-2010, 09:46
Спасибо! Очень грамотно расписано. Воспользоваться командой attrib /?, там нашёл что системные файлы имеют атрибут /s. Для поиска всех системных файлов в текущем каталоге и вывода количества на экран, я прав? Attrib "*.*"|>Nul FindStr /BIR ".....R"&& Set %RO=RO+1
echo %RO%

amel27
19-11-2010, 11:57
Hardip, у атрибута S другое положение в строке, отфильтровать только системные файлы:
Attrib *|FindStr /BR "...S.."

Hardip
19-11-2010, 15:21
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
Сделал я вот так »

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

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

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

вывести количество системных файлов можно так:
@echo off

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

Hardip
19-11-2010, 16:05
вывести количество системных файлов можно так: »
Вот это да! Не думал, что можно напрямую - "" передавать поиск.. С /С всё ясно. А параметр /V ведь задает - "Вывод всех строк, не содержащих данную строку". Почему он здесь?

amel27
19-11-2010, 16:15
Hardip, соответственно, подсчет НЕпустых (т.е. всех) строк




© OSzone.net 2001-2012