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

Ответить
Аватара пользователя
sov44

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

Сообщение sov44 »

Нужен батник для поиска в компьютере папок Temp, Tmp на всех дисках и в поддиректориях и удаление их содержимого через



Код:

Код: Выделить всё

PUSHD "%TP%"
2>Nul RD /S/Q "%TP%"
POPD

не удаляя сами папки.



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

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

Сообщение AkP »

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



PUSHD "%TP%"

del "%CD%temp\*.*" /f /q

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

POPD



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

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

Сообщение sov44 »

С поиском вроде разобрался, а как назначить переменную и включить её содержимое в обработку, пока думаю.



Код:

Код: Выделить всё

@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
Аватара пользователя
AkP

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

Сообщение AkP »

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





Код:

Код: Выделить всё

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, вдруг они на разных дисках
Аватара пользователя
sov44

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

Сообщение sov44 »

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

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

Сообщение AkP »

Цитата sov44:



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




У тебя? Я думал на удаленных компьютерах.... что-то вроде: просканировать окружение, подключиться к включенным компам пользователей и очистить у них временные папки... да еще и сетевой диск подключается...

Если все действо происходит на твоей локальной машинке... то нужно ли искать, подключать временные сетевые диски итд... Можно обойтись 4 строчками с "del", по 2 на каждую ОС.
Аватара пользователя
mamont1

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

Сообщение mamont1 »

икать на всех дисках папки 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

CMD/BAT - [решено] Удаление всех папок с одним именем на всех дисках
Аватара пользователя
sov44

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

Сообщение sov44 »

Цитата AkP:



подключиться к включенным компам пользователей и очистить у них временные папки...
CMD/BAT - [решено] Найти папку и удалить содержимое




Интересная тема, было бы просто здорово! Такое возможно?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»