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

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

Ответить
Настройки темы
CMD/BAT - [решено] Найти папку и удалить содержимое

Ветеран


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


Конфигурация

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


Изменения
Автор: sov44
Дата: 22-12-2010
Нужен батник для поиска в компьютере папок Temp, Tmp на всех дисках и в поддиректориях и удаление их содержимого через
Код: Выделить весь код
PUSHD "%TP%"
2>Nul RD /S/Q "%TP%"
POPD
не удаляя сами папки.

п.с. Если задача сложна, то папки Temp, Tmp ищутся в корне дисков и в директории Windows на дисках.

Отправлено: 15:10, 22-12-2010

 
AkP AkP вне форума

Пользователь


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

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


Если без поиска, то очень просто:

PUSHD "%TP%"
del "%CD%temp\*.*" /f /q
del "%CD%Windows\temp\*.*" /f /q
POPD

Что касается поиска..., а не проще удаленно считать значение переменных temp и tmp из реестра?

Отправлено: 08:43, 23-12-2010 | #2



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

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


Ветеран


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

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


С поиском вроде разобрался, а как назначить переменную и включить её содержимое в обработку, пока думаю.
Код: Выделить весь код
@echo off
set TP=Temp
set TP1=Windows\Temp
Set TP2=TMP
Set TP3=Windows\Tmp
SET CDROM=%%i:
FOR %%i IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO IF EXIST %%i:\%Tp% Echo %%i:\%Tp%>>log.txt
FOR %%i IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO IF EXIST %%i:\%TP1% Echo %%i:\%Tp1%>>log.txt
FOR %%i IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO IF EXIST %%i:\%Tp2% Echo %%i:\%Tp2%>>log.txt
FOR %%i IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO IF EXIST %%i:\%TP3% Echo %%i:\%Tp3%>>log.txt
goto :eof
END

Последний раз редактировалось sov44, 23-12-2010 в 10:21.


Отправлено: 09:55, 23-12-2010 | #3

AkP AkP вне форума

Пользователь


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

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


Все же искать не нужно, можно просто спросить....

Код: Выделить весь код
Setlocal
Set RemoteMachineName=pp1
Set RegEnvVar=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

For /f "tokens=1,2,*" %%n In ('reg query "\\%RemoteMachineName%\%RegEnvVar%" /v "temp"^|Find /i "temp"') do Set RemoteTemp=%%p

For /f "tokens=1,2,*" %%n In ('reg query "\\%RemoteMachineName%\%RegEnvVar%" /v "tmp"^|Find /i "tmp"') do Set RemoteTmp=%%p
В результате мы имеем переменные RemoteTemp и RemoteTmp, которые и содержат путь до Temp и Tmp
Все что осталось, это заменить ":" на "$" и впереди подставить RemoteMachineName
Теперь можно делать PUSHD сразу внутрь папки Temp и Tmp и удалять все что там есть.
Делать 2 раза естественно, отдельно Temp и Tmp, вдруг они на разных дисках

Отправлено: 12:31, 23-12-2010 | #4


Ветеран


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

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


AkP, как я понимаю, скрипт обращается к %SystemRoot%, и это не то, что нужно. У меня на компе стоит две системы, во второй системе, я полагаю, папки Temp, Tmp скрипт не найдёт.

Отправлено: 12:51, 23-12-2010 | #5

AkP AkP вне форума

Пользователь


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

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


Цитата sov44:
У меня на компе стоит »
У тебя? Я думал на удаленных компьютерах.... что-то вроде: просканировать окружение, подключиться к включенным компам пользователей и очистить у них временные папки... да еще и сетевой диск подключается...
Если все действо происходит на твоей локальной машинке... то нужно ли искать, подключать временные сетевые диски итд... Можно обойтись 4 строчками с "del", по 2 на каждую ОС.

Отправлено: 13:15, 23-12-2010 | #6


Старожил


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

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


икать на всех дисках папки temp и удалить все файлы (и в подпапках)
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set F=temp
For %%D In (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
  For /F "Delims=" %%I In ('Dir %%D:\%F%.* /AD /B /S 2^>nul') Do (
    If Exist "%%I" (
      If /I "%%~nxI"=="%F%" Echo "%%I"
      If /I "%%~nxI"=="%F%" del /S /Q "%%I\">nul
	  )
  )
)
pause
навеяно от сюда

Последний раз редактировалось mamont1, 23-12-2010 в 19:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:37, 23-12-2010 | #7


Ветеран


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

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


Цитата AkP:
подключиться к включенным компам пользователей и очистить у них временные папки... »
Интересная тема, было бы просто здорово! Такое возможно?

Отправлено: 14:29, 23-12-2010 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - удалить неудаляемую папку pribl Microsoft Windows 7 6 14-06-2009 09:10
V. 5.5/2000/2003 - Переместить содержимое почтового ящика в общую папку migunov Microsoft Exchange Server 2 25-02-2009 19:02
Разное - содержимое папки мои документы заменено на пустую папку bizzzzz Microsoft Windows 2000/XP 14 15-02-2009 22:05
[решено] Не могу найти папку MiXalich Хочу все знать 2 01-02-2009 00:14
Ошибка - [решено] Помогите удалить папку Urbanrasta Microsoft Windows 2000/XP 10 07-03-2008 03:20




 
Переход