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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Закрытая тема
Настройки темы
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Новый участник


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

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


Внимание!


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

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь в написании батника". Это и так понятно Заголовок темы должен быть осмысленным.





Исходный вопрос участника
Всех приветствую.
Задача следующая: смотрим в в каталог (например d:\dir\*.*) и если в нем сущетвуют файлы возраст которых более 40 дней, то отправляем email на указанный адрес.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:17, 01-11-2005

 

Googler


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

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


ИМХО достаточно двух команд (ATTRIB необязателен для RD):
Код: Выделить весь код
Set TempDir=%SystemRoot%\Temp

RD "%TempDir%" /S /Q
If Not Exist "%TempDir%" MD "%TempDir%"
Но тут есть одна проблема - при удалении/создании каталога сбрасываются NTFS-права, поэтому если быть совсем правильным, то нужно восстанавливать ACL, назначенный каталогу при установке системы (при помощи CACLS или XCACLS).

Отправлено: 12:15, 24-07-2008 | #231



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

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


Аватара для zeroua

Ветеран


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

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


amel27,
Цитата amel27:
Но тут есть одна проблема - при удалении/создании каталога сбрасываются NTFS-права, поэтому если быть совсем правильным, то нужно восстанавливать ACL, назначенный каталогу при установке системы (при помощи CACLS или XCACLS). »
, а теперь как для полного чайника поподробнее пожалуйста и если можно простой пример или готовую реализацию ...

-------
лучше по утру на Google Earth искать ГДЕ ты пил, чем на youtube КАК...
http://forum.oszone.net/image.php?type=sigpic&userid=68333&dateline=1203429944


Отправлено: 12:19, 24-07-2008 | #232


Googler


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

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


гм, дефолтовые права на TEMP оказались довольно хитрыми и точно восстановить с помощью штатных утилит не получается, разве только SUBINACL использовать, но ее нужно дополнительно копировать... Можно сделать следующий финт: создать в TEMP пустую подпапку (при этом она наследует права TEMP) и потом поставить ее на место хозяина:
Код: Выделить весь код
Set TempDir=%SystemRoot%\Temp

MD %TempDir%\~Temp
MD %TempDir%\~~Temp
MOVE %TempDir%\~Temp %SystemRoot%\

RD /S /Q %TempDir%
If Exist %TempDir% (
	RD /Q %SystemRoot%\~Temp
) ELSE (
	REN %SystemRoot%\~Temp Temp
)
З.Ы. второй MD нужен чтобы освободить ~Temp, иначе не дает переместить следующим MOVE

Отправлено: 14:39, 24-07-2008 | #233


Аватара для zeroua

Ветеран


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

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


amel27, га круто чем мой вариант плох ??? и зачем это делать ? на нем и так куча прав например для того чтобы там появился вирус или еще чтото ...

-------
лучше по утру на Google Earth искать ГДЕ ты пил, чем на youtube КАК...
http://forum.oszone.net/image.php?type=sigpic&userid=68333&dateline=1203429944


Отправлено: 15:45, 24-07-2008 | #234


Аватара для zeroua

Ветеран


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

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


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

Цитата amel27:
ИМХО достаточно двух команд (ATTRIB необязателен для RD): »
, лично мне казалось что это для команды
Код: Выделить весь код
DEL "%systemroot%\Temp\*.*" /S /Q
и еще одно так для общего развития будет ли работать в таком виде:

Код: Выделить весь код
If Not Exist "%systemroot%\Temp" MD "%systemroot%\Temp"

-------
лучше по утру на Google Earth искать ГДЕ ты пил, чем на youtube КАК...
http://forum.oszone.net/image.php?type=sigpic&userid=68333&dateline=1203429944


Последний раз редактировалось zeroua, 24-07-2008 в 23:12.


Отправлено: 22:56, 24-07-2008 | #235


Googler


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

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


Цитата zeroua:
круто чем мой вариант плох ??? и зачем это делать ? на нем и так куча прав например для того чтобы там появился вирус или еще чтото »
Могу только догадываться о причинах, по которым даны именно такие права, а не другие - к примеру, на TEMP имеет права учетка SYSTEM, под которой обычно работают службы... после пересоздания она теряет свои права (в группу "Администраторы" она не входит). Насчет вирусов... ИМХО дефолтовые права тоже не ламеры рисовали, добавление права равно как и его удаление должно быть всегда обосновано. Вот ремейк твоего варианта, оптимизированный по скорости выполнения и без удаления TEMP:
Код: Выделить весь код
PUSHD %SystemRoot%\Temp

For /F %%i In ('DIR /B /A:D *') Do RD /Q /S %%i
ATTRIB -R -S -H *
DEL /F /Q *

POPD
Цитата zeroua:
может просто папке темп поменять так права чтобы она ни при каких обстоятельствах не удалялась ... а удалялось лишь то что в ней »
есть идея получше - открыть папку TEMP и вызвать RD, тогда все содержимое будет удалено кроме самой TEMP (будет выдана ошибка доступа):
Код: Выделить весь код
PUSHD %SystemRoot%\Temp
RD /S /Q %SystemRoot%\Temp >Nul 2>&1
POPD
Цитата zeroua:
будет ли работать в таком виде »
будет, поскольку пробелов в имени нет я кавычки опустил

Отправлено: 03:39, 25-07-2008 | #236


Аватара для zeroua

Ветеран


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

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


amel27, хорошо если это так сложно на bat/cmd, возможно это будет проще реализовать на другом скрип языке и возможно даже в виде утилиты ... а может даже добавить туда очистку "%SystemRoot%\Prefetch\" как это реализовано в программе TweakNow, что скажете по этому поводу ...

-------
лучше по утру на Google Earth искать ГДЕ ты пил, чем на youtube КАК...
http://forum.oszone.net/image.php?type=sigpic&userid=68333&dateline=1203429944


Отправлено: 09:11, 25-07-2008 | #237


Аватара для yurfed

Ветеран


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

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


Почему для очистки папки TEMP все упорно указывают на %SystemRoot% и никто не подумал что переменные среды могут быть изменены самим пользователем?

Например папка TEMP может находится и в корне системного диска %SYSTEMDRIVE% (ди и вообще -где угодно).
Для начала неплохо бы выяснить переменную среду для временной папки, а уж потом удалять.

Забыли про переменную %USERPROFILE%\Local Settings\Temp которая так же, может быть изменена.

Может лучше как-то так %TEMP% или так %TMP%?

TEMP (системная) и ТМР (локальная) - Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP. Потенциально TEMP и TMP могут указывать на разные каталоги, но обычно - совпадают.

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 13:48, 25-07-2008 | #238


Аватара для zeroua

Ветеран


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

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


yurfed, для начала я знаю что я делаю так как назначаю темп только в одно место ... тоесть %systemroot%\Temp и это делаю не для когото а для себя ... хотите предложить универсальный вариант, прошу, а то разводить догадки мы все можем а вот сделать дело немногие, но в целом использовать переменную среду %TEMP% и %TMP% более правильно но вот только тогда нужно писать файл и для удаления %TEMP% и %TMP%, а если они в одном месте и заведомо %systemroot%\Temp так наверное проще ... хотя тут спорный вариант ... я думаю что лишь из немногих рядовых пользователей знают что такое переменная среда ... и менять ее не станут ...

-------
лучше по утру на Google Earth искать ГДЕ ты пил, чем на youtube КАК...
http://forum.oszone.net/image.php?type=sigpic&userid=68333&dateline=1203429944


Отправлено: 14:02, 25-07-2008 | #239


Аватара для yurfed

Ветеран


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

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


Цитата zeroua:
для начала я знаю что я делаю »
флаг тебе в руки, делай.

Сам я не специалист по написанию батников, но было предложено выйти при написании из разряда "Для себя любимого" в разряд -"Для всех".

Вычищает TEMP локального пользователя
Код: Выделить весь код
PUSHD %temp%
RD /S /Q %temp% >Nul 2>&1
POPD

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Последний раз редактировалось yurfed, 25-07-2008 в 14:36.


Отправлено: 14:18, 25-07-2008 | #240



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38
[решено] Как с помощью CMD(BAT) запустить запароленный sfx архив! ofcoss Автоматическая установка приложений 7 10-07-2009 00:41
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45
Нужна снова ваша помощь в написании интересного скрипта Magnus Вебмастеру 2 09-06-2005 20:26
Нужна помощь в написании скрипта Magnus Вебмастеру 7 06-05-2005 10:53




 
Переход