Показать полную графическую версию : [решено] Очищение папки TEMP
neviDimka91
27-02-2019, 10:26
Доброго времени суток, дорогие форумчане. Знаю тема уже не новая, и скорее всего есть решение, но мне довольно сложно найти его, еси вы подскажите (ткнете носом) на уже готовое решение, буду признателен. А сейчас вопрос такой. Есть 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 (C:\Users\<пользователь>\AppData\Local\Temp) которую необходимо очищать при каждом его входе в систему. »
не надо
содержимое TEMP в общем случае должно переживать перезагрузку
neviDimka91
27-02-2019, 10:59
не надо
содержимое TEMP в общем случае должно переживать перезагрузку »
объясню, зачем такое нужно. Пользователи работая в 1с, за один день набивают содержимом эту папку от 5 до 10гб за день. Сервер перезагружается каждую ночь. Может тогда очищать папку вечером, когда все ушли или же утром, перед работой?
как правильно его написать? »
для очистки папки используется следующий код
@echo off
set "sdir=%TEMP%"
pushd "%sdir%"
rd /s /q "%sdir%" 2>nul
popd
pause
а если папок не одна, то можно так
@echo off
set "sdir="%TEMP%" "%USERPROFILE%\AppData\Local\Temp""
for %%n in (%sdir%) do (
pushd "%%~n"
echo rd /s /q "%%~n" 2>nul
popd
)
pause
neviDimka91
27-02-2019, 15:42
@echo off
set "sdir=%TEMP%"
pushd "%sdir%"
rd /s /q "%sdir%" 2>nul
popd
pause
на сервере не сработал папка не почистилась, на локальном компьютере сработал
@echo off
set "sdir="%TEMP%" "%USERPROFILE%\AppData\Local\Temp""
for %%n in (%sdir%) do (
pushd "%%~n"
echo rd /s /q "%%~n" 2>nul
popd
)
pause
не работает
Пользователи работая в 1с, за один день набивают содержимом эту папку от 5 до 10гб за день. »
Чем?!
на сервере не сработал »
конкретный путь укажите - сработает
не работает »
в этой строке
echo rd /s /q "%%~n" 2>nul
стоит предохранитель: echo, надо убрать для работы, вам же пользоваться, надо внимательно смотреть.
neviDimka91
28-02-2019, 08:33
Чем?! »
я не силен в работе 1с, в папку ТЕМР залетают все документы и файлы, которые пользователь использовал во время работы программы.конкретный путь укажите - сработает »
указал, сработало. Спасибо огромное.
но теперь возникает другой вопрос, говорят папку очищать при входе пользователя в компьютер "не правильно" как тогда быть? и почему это не правильно, разъясните пожалуйста, чем это чревато, спасибо.
очищать при входе пользователя в компьютер "не правильно" как тогда быть? и почему это не правильно, разъясните пожалуйста, чем это чревато »
полагаю вопрос к Busla или Iska, потому как в таких вопросах как раз я не силен.
neviDimka91, каталог временных файлов может использоваться инсталляциями приложений для временного хранения тех файлов, которые не могут быть заменены непосредственно в момент иснталляции, потому как используются операционной системой или самим приложением, их замена выносится на момент загрузки или предзагрузки операционной системы. Потому удалять всё зараз может не быть хорошо. Поэтому, например, штатная утилита Disk Cleanup удаляет оттуда только те файлы, разница в дате-времени последней модификации которых с текущей датой составляет свыше семи дней.
neviDimka91
05-03-2019, 10:37
neviDimka91, каталог временных файлов может использоваться инсталляциями приложений для временного хранения тех файлов, которые не могут быть заменены непосредственно в момент иснталляции, потому как используются операционной системой или самим приложением, их замена выносится на момент загрузки или предзагрузки операционной системы. Потому удалять всё зараз может не быть хорошо. Поэтому, например, штатная утилита Disk Cleanup удаляет оттуда только те файлы, разница в дате-времени последней модификации которых с текущей датой составляет свыше семи дней. »
спасибо за информацию. скрипт мы все равно запустили, тестируем 3 день, все работает в штатном режиме. 1с сервер ночью перезагружается, сотрудник приходит на работу, запускает rdp подключение, скрипт отрабатывает и он спокойно себе работает в 1с. На следующий день, процедура повторяется, при этом очищается все то, что пользователь наработал накануне
для тех, кто пропустил, код скрипта:
@echo off
set "sdir=C:\Users\%username%\AppData\Local\Temp\"
pushd "%sdir%"
rd /s /q "%sdir%" 2>nul
popd
neviDimka91, неправильно делаете. Вечером поясню.
и скорее всего есть решение »Сообщение #6 (http://forum.oszone.net/post-1591026.html#post1591026)
каталог временных файлов может использоваться инсталляциями »Не обязательно (https://i2.imageban.ru/out/2019/03/05/9761870d28d17749a3000fd2a14a4d27.png). В данном случае - Busla предоставил верный ответ.
Впрочем неразумным людям всё-равно невдомёк и сделают по своему - "Надо и всё".
neviDimka91
06-03-2019, 08:09
neviDimka91, неправильно делаете. Вечером поясню. »
с удовольствием выслушаю. Я еще думаю, может мы не о той папочке ТЕМР говорим, надо разобраться)
с удовольствием выслушаю. »Пожалуйста, читайте и вчитывайтесь в статью Очистка диска в Windows 10, 8.1 и 7: расширенная настройка и запуск по расписанию (http://www.oszone.net/13312/cleanmgr).
Я еще думаю, может мы не о той папочке ТЕМР говорим »%TEMP% опущу. Перейду к более точным место расположениям: %LocalAppData%\Temp или %UserProfile%\AppData\Local\Temp.
neviDimka91
06-03-2019, 14:51
Перейду к более точным место расположениям: »
%LocalAppData%\Temp данную папку вообще не трогаем
%UserProfile%\AppData\Local\Temp - очищается только в том случае, когда пользователь подключается к серверу по RDP
Пожалуйста, читайте и вчитывайтесь в статью »
за ссылку спасибо, обязательно прочитаю
%LocalAppData%\Temp данную папку вообще не трогаем
%UserProfile%\AppData\Local\Temp - очищается только в том случае, когда пользователь подключается к серверу по RDP »
Переменная %LocalAppData% после подстановки разворачивается в C:\Users\<имя_пользователя>\AppData\Local, т.е. ровно туда же, куда и %UserProfile%\AppData\Local
При этом подстановка переменных берётся с того компьютера, на котором запущен командный файл.
neviDimka91
06-03-2019, 15:50
в C:\Users\<имя_пользователя>\AppData\Local, т.е. ровно туда же, куда и %UserProfile%\AppData\Local »
по данному пути, в папке ТЕМР всегда замечаются папки (множество папок) с именем из комбинации цифр, например 50, 78,99,25 и тп. в них же находятся в основном документы с расширением pdf, doc, xls, больше ничего. Соответственно данные файлы (как мне известно)прикрепляются где то в программе 1с, мб в каком то поле договора или что-то подобное, я не 1с, точно не скажу.
Как пример пользователь работает в 1с уже больше 3х лет, данная папка ни разу не очищалась, а в ней за все это время накопилось свыше 25гб файлов данного расширения. Посмотрев остальных ~100 юзеров, обнаружили похожую ситуацию.
всегда замечаются папки (множество папок) с именем из комбинации цифр, например 50, 78,99,25 и тп. »
Нет никакого смысла анализировать названия папок и файлов в этих папках — за редкими исключениями когда, например, надо посмотреть какие-то из логов, находящихся в этой папке. Их можно грохать все, но только после завершения загрузки, особенно при установке обновлений — и до начала работы. Причём даже на этом этапе некоторые файлы из этой папки могут использоваться системой — и тогда она их удалить не даст.
Не обязательно . »
Разве слова «не обязательно» вступают в какое-то противоречие со словом «может» ;)?
neviDimka91, неправильно делаете. Вечером поясню. »
Выкладка пояснения затянулась, но всё же:
@echo off
setlocal enableextensions enabledelayedexpansion
set sTempFolder=%Temp%
if exist "%sTempFolder%\." (
echo Clear folder [%sTempFolder%]
pushd "%sTempFolder%" && 2>nul (rmdir /s /q "%sTempFolder%" & popd)
) else (
echo Not found [%sTempFolder%].
exit /b 1
)
endlocal
exit /b 0
Ключевые, с моей точки зрения, места в коде выделил.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.