|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Изменение текста в файле |
|
|
CMD/BAT - [решено] Изменение текста в файле
|
|
Старожил Сообщения: 173 |
Добрый день.
Есть компьютер, на котором расположены общие папки по отделам. Есть необходимость регулярно готовить отчеты об изменениях в правах на папки, т.е. кто получил доступ до какой папки. Что есть и работает. Есть файл spisok.txt - в котором перечислены названия папок И есть bat-файл, вот с такими содержимым(z:\ - это сетевой диск, где расположены папки, а длинный путь это путь до моего компа. out - папка, рядом с bat-файлом): for /f %%a in (spisok.txt) do cacls z:\%%a >> "c:\documents and settings\user\desktop\cacls\%%a.LOG" xcopy /z /i *.log out del *.log cd out find /i "DOMAIN" *.log >> spisok_all_folder.txt ---------- FOLDER1.LOG
z:\FOLDER1 DOMAIN\USER1:F
DOMAIN\USER2:(OI)(CI)F
---------- FOLDER2.LOG
DOMAIN\USER1:(OI)(CI)C
DOMAIN\USER2:(OI)(CI)C
F - полные OI - Для этой папки и ее файлов CI - Для этой папки и ее подпапок (IO)(CI) Для этой папки, ее подпапок и файлов (OI)(CI)(IO) Только для подпапок и файлов (CI)(IO) Только для подпапок (OI)(IO) Только для файлов и т.д. Вот только не знаю как. |
|
|
Отправлено: 11:57, 11-08-2009 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать tarasov.evgeny, как вариант обработки файла spisok_all_folder.txt:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set $LOG=spisok_all_folder.txt
Set F=Полные
Set C=Изменение
Set W=Запись
Set R=Чтение
Set N=Отсутствие
Set OICI=Для этой папки, ее подпапок и файлов
Set CI=Для этой папки и ее подпапок
Set OI=Для этой папки и ее файлов
Set OICIIO=Только для подпапок и файлов
Set CIIO=Только для подпапок
Set OIIO=Только для файлов
For /F "UseBackQ Delims=" %%i In ("%$LOG%") Do (
Set $LINE=%%i
If Not "---"=="!$LINE:~0,3!" (
Set $RGHT=%%!$LINE:~-2,1!%%
Set $LINE=!$LINE:~0,-2!
Set $LINE=!$LINE:^)(=!
Set $LINE=!$LINE:^(= %%!
Set $LINE=!$LINE:^)=%%! [!$RGHT!]
) Else Echo.
CALL Echo !$LINE!
)
|
|
Отправлено: 14:48, 11-08-2009 | #2 |
|
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать Помогите разобрать по строчкам:
SetLocal EnableExtensions EnableDelayedExpansion - здесь наверное просто опечатка? S - не нужна. Вы включаете всё возможности командной строки. вот здесь темный лес. Вы разбираете файл spisok_all_folder.txt по строчкам и каждую строчку запихиваете в переменную $line? А затем ещё страшнее ![]() If Not "---"=="!$LINE:~0,3!" (
Set $RGHT=%%!$LINE:~-2,1!%%
Set $LINE=!$LINE:~0,-2!
Set $LINE=!$LINE:^)(=!
Set $LINE=!$LINE:^(= %%!
Set $LINE=!$LINE:^)=%%! [!$RGHT!]
) Else Echo.
CALL Echo !$LINE!
set $RGHT и переменной LINE дается новое значение? Что значить знак ! Что значить :~0,2 Где это можно посмотреть в стандартном описание, я что-то такого не нахожу. |
|
Отправлено: 17:23, 11-08-2009 | #3 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата tarasov.evgeny:
Цитата tarasov.evgeny:
![]() Цитата tarasov.evgeny:
Цитата tarasov.evgeny:
Цитата tarasov.evgeny:
Цитата tarasov.evgeny:
![]() |
||||||
|
Отправлено: 06:29, 12-08-2009 | #4 |
|
Старожил Сообщения: 173
|
Профиль | Отправить PM | Цитировать Я прошу прощения за назойливость, но я не могу найти описание вот таких частей как:
или Вот что это значит. Если в строке нет трех тире то, мы как-то разбираем строчку: Объясните хотя бы на примере [!$RIGHT] Из команды if мне понятно, что мы пропускаем строчку с тире и разбираем другие строки. Причем мы берем не всю строку а с какими-то атрибутами - !:~0,3! и добавляем две переменные. Одна из них задает права [!$RIGHT]. Опять же не понятно, почему два %, что такое !, и т.д. Вроде как бы одно подставляется в другое и так три раза, но например каким макаром в строку попадает перменная в который задано, что F - > полные. Для меня загадка. Вот хоть убейте не разберусь ![]() Я может не там смотрю (или не так ), но не нахожу информации ![]() |
|
|
Отправлено: 15:59, 12-08-2009 | #5 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать "!$LINE:~-2,1!" - возвращает предпоследний символ "$LINE"
"!$LINE:~0,-2!" - возвращает "$LINE" без последних двух символов цитата из справки ("SET /?"): Цитата:
CMD/BAT - [решено] Раскрытие имени файла во вложеном For CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. |
|
|
Отправлено: 16:21, 12-08-2009 | #6 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] есть ли способ быстрого поиска текста в файле ? | mitiya | Скриптовые языки администрирования Windows | 2 | 27-03-2010 23:33 | |
| Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле | Pashka | Программирование и базы данных | 7 | 18-01-2010 19:20 | |
| Vista / 2008 - Изменение цвета текста во время установки | Smirniy | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 0 | 30-09-2009 22:18 | |
| CMD/BAT - Расположение текста в файле в 2 колонки | Serg2010 | Скриптовые языки администрирования Windows | 6 | 28-08-2009 18:31 | |
| CMD/BAT - Изменение курсоров в командном файле. | Kardinalli | Скриптовые языки администрирования Windows | 13 | 04-06-2009 16:14 | |
|