![]() |
Очищение папки TEMP
Доброго времени суток, дорогие форумчане. Знаю тема уже не новая, и скорее всего есть решение, но мне довольно сложно найти его, еси вы подскажите (ткнете носом) на уже готовое решение, буду признателен. А сейчас вопрос такой. Есть windows server 2008 куда по RDP подключаются порядка 100 человек, у нас на нем 1с сервер. У пользователя в профиле есть папочка TEMP (C:\Users\<пользователь>\AppData\Local\Temp) которую необходимо очищать при каждом его входе в систему. Знаю, что это делается через скрипт, я его написал (взял в интернете) но он не работает, а что-то менять, когда в этом не разбираешься, не очень хочется(опасно). Подскажите как правильно его написать?
Скрытый текст
pushd %TEMP% && rd /s /q . > nul 2>&1 pushd %WinDir%\TEMP && rd /s /q . > nul 2>&1 есть еще такой, но он совсем удаляет папку TEMP Скрытый текст
:start DEL /F /S /Q /A "%USERPROFILE%\AppData\Local\Temp\*" cd %USERPROFILE%\AppData\Local\Temp\\AppData\Local\Temp rmdir /s /q %USERPROFILE%\AppData\Local\Temp |
Цитата:
содержимое TEMP в общем случае должно переживать перезагрузку |
Цитата:
|
Цитата:
Код:
@echo off Код:
@echo off |
HTML код:
@echo off HTML код:
@echo off |
Цитата:
|
|
Цитата:
Цитата:
но теперь возникает другой вопрос, говорят папку очищать при входе пользователя в компьютер "не правильно" как тогда быть? и почему это не правильно, разъясните пожалуйста, чем это чревато, спасибо. |
Цитата:
|
neviDimka91, каталог временных файлов может использоваться инсталляциями приложений для временного хранения тех файлов, которые не могут быть заменены непосредственно в момент иснталляции, потому как используются операционной системой или самим приложением, их замена выносится на момент загрузки или предзагрузки операционной системы. Потому удалять всё зараз может не быть хорошо. Поэтому, например, штатная утилита Disk Cleanup удаляет оттуда только те файлы, разница в дате-времени последней модификации которых с текущей датой составляет свыше семи дней.
|
Цитата:
для тех, кто пропустил, код скрипта: Код:
@echo off |
neviDimka91, неправильно делаете. Вечером поясню.
|
Цитата:
Цитата:
Впрочем неразумным людям всё-равно невдомёк и сделают по своему - "Надо и всё". |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
%UserProfile%\AppData\Local\Temp - очищается только в том случае, когда пользователь подключается к серверу по RDP Цитата:
|
Цитата:
При этом подстановка переменных берётся с того компьютера, на котором запущен командный файл. |
Цитата:
Как пример пользователь работает в 1с уже больше 3х лет, данная папка ни разу не очищалась, а в ней за все это время накопилось свыше 25гб файлов данного расширения. Посмотрев остальных ~100 юзеров, обнаружили похожую ситуацию. |
Цитата:
|
Цитата:
Цитата:
Код:
@echo off |
Цитата:
Поясню картинкой: ![]() Названия соответствуют существующим элементам, т.е. "file" - файл, "FOLDER" - каталог |
Цитата:
Цитата:
Цитата:
|
YuS_2, антересно девки пляшуть, по четыре штуки в ряд. Хмм… Я был уверен, что именно наличие точки гарантирует, что это будет каталог. У Вас есть идеи — отчего так?!
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Надо просто запомнить и больше не использовать данную логику в пакетных файлах (в остальных языках есть нормальное деление на File Exists/Folder Exists). |
Цитата:
Цитата:
На файл условный оператор указывает правильно: Код:
if exist "d:\FOLDER\file\" (echo Yes) else (echo No) А если без слэша, то файл будет найден, хоть и перейти нельзя - тут всё верно и условный оператор отрабатывает соответственно тому, о чем его попросили. И кстати, вот это тоже верно, с точки зрения синтаксиса и логики тоже: Код:
if exist "d:\FOLDER\file\.." (echo Yes) else (echo No) А вот это вне логики: Код:
if exist "d:\FOLDER\file\." (echo Yes) else (echo No) |
Цитата:
Код:
@echo off |
Цитата:
В общем, понадобится двойная проверка, ещё и как минимум, на наличие дефиса "-", чтобы однозначно определить, что это существующий путь к файлу или каталогу. |
Цитата:
Код:
@echo off |
Цитата:
Код:
robocopy /e /xj /minage:7 /mov /r:0 /w:0 %temp% %temp%\_old_ /xd _old_ |
Раз уж тут так много знающих людей по работе и написанию скриптов , могу я вас попросить о помощи. Есть тот же сервер, к которому по RDP подключаются пользователи. На этом сервере, по пути C:\User\ лежат их папки с профилями. Так вот у каждого в этом профиле есть папочка, а именно путь к ней такой C:\Users\username\AppData\Roaming\1C\1CEStart в этой папке лежит файлик 1CEStart.cfg. Периодически мы изменяем этот файлик и его нужно распространить всем пользователям, как бы заменить. Как при помощи скрипта это сделать?
|
так, если есть имена под рукой
Код:
@echo off Код:
@echo off |
neviDimka91, домен есть, эти пользователи доменные?
|
Цитата:
по поводу кода, что постом выше, надо будет попробовать, спасибо |
Цитата:
и вообще- это офтопик, неужели непонятно, что вопрос к теме не относится |
Цитата:
CommonInfoBases=\\srv-fs-ip\allbase$\sta_do.v8i и таких путей в этом файле 22. Соответственно, когда появляется новая база, создается файлик с расширением .v8i и в файле 1CEStart.cfg прописываем данный путь к этому файлу. Потом когда какому то пользователю необходимо подключить данную базу, я на домене вношу его в специальную группу доступа и база подключается автоматически. И что бы это отработало на 100%, необходимо в его профиле на сервере заменить файл 1CEStart.cfg на новый (где новая база) |
neviDimka91, вот и пропишите в общем сетевом common.cfg свои 22 пути
а в локальном только Код:
CommonCfgLocation=\\srv-fs-ip\allbase$\common.cfg |
Время: 13:03. |
Время: 13:03.
© OSzone.net 2001-