Показать полную графическую версию : [решено] Определение атрибута файла & проверка наличия процесса
user_123
18-08-2009, 21:32
Подскажите пожалуйста, как через bat-файл:
1) проверить, имеет ли определённый файл атрибут "только чтение" и если имеет, присвоить значение преременной.
2) проверить, запущен ли определённый процесс и если он запущен, присвоить значение переменной.
Заранее благодарен.
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, спасибо, буду пробовать...
А можно немного прокомментировать код, или посмотерть что это. Мне просто нужно системный аттрибут, это я нашёл, но не понял как он количство переменной передает?
можно немного прокомментировать код »
Attrib "File.txt" - выводит атрибуты файла
| - перенаправляет вывод следующей команде
FindStr /BIR ".....R" - ищет во входном тексте нужный атрибут
&& - если "успех", выполняется следующая команда
Set RO=Y - присваивает переменной RO значение Y
Спасибо! Очень грамотно расписано. Воспользоваться командой attrib /?, там нашёл что системные файлы имеют атрибут /s. Для поиска всех системных файлов в текущем каталоге и вывода количества на экран, я прав? Attrib "*.*"|>Nul FindStr /BIR ".....R"&& Set %RO=RO+1
echo %RO%
Hardip, у атрибута S другое положение в строке, отфильтровать только системные файлы:
Attrib *|FindStr /BR "...S.."
Attrib *|FindStr /BR "...S.." »
Спасибо! Сделал я вот так Set Cnt=0 For %%I In (*) Do Attrib "*.*"|FindStr /BR "...S.."&& Set /A Cnt += 1
Echo %Cnt% Файлов в катологе 4, и он их имена и выводит, но выводит кол-во файлов почему - то 3. Вот картинки файлов и программы.
Сделал я вот так »
цикл FOR перебирает все файлы в текущем каталоге, для каждого файла:
- ATTRIB выводит ВСЕ файлы, передает их в FindStr;
- если FindStr находит хотя бы один системный, возвращает TRUE;
- так как хотя бы один есть всегда, инкрементируется CNT
т.е. скрипт подсчитывает общее кол-во файлов в текущем каталоге
вывести количество системных файлов можно так:
@echo off
Attrib *|FindStr /BR "...S.."|Find /C /V ""
pause>nul
вывести количество системных файлов можно так: »
Вот это да! Не думал, что можно напрямую - "" передавать поиск.. С /С всё ясно. А параметр /V ведь задает - "Вывод всех строк, не содержащих данную строку". Почему он здесь?
Hardip, соответственно, подсчет НЕпустых (т.е. всех) строк
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.