delete temp files in specific user directory

I want to make a script that delete all temperary files in a specific user share.

The script must delete all files in \fileserver\usershare\%username%\sg\temp

The script must run every saterday and have to be for all users. we all got Windows 2003 servers and the files are on a NAS.

So how can i make a script that does this for me.
josbosAsked:
Who is Participating?
 
canaliConnect With a Mentor Commented:
The vbs script delete also the temp you need to recreate it
add after the line 24
' re-create the folder BUT with new permissions!! check it
objFSO.CreateFolderFolder(strHomedir & "\sg\temp")

I have wrote a batch tha do the work without delete the temp

Bye Gastone Canali
@echo off
:::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: *** Gastone Canali ***
::
:: DELallin.cmd
:: delete all file and folders in
:: EX.: \\fileserver\usershare\ANY_FOLDERS\sg\temp
:: where ANY_FOLDERS are all the dirs 
:: in \\fileserver\usershare\
:: "%PreUsrDir%\ANY_USER_FOLDERS\%PostUsrDir%"
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal
pushd %~d0%~p0
set logfile=%temp%\_dellog.log
set log=^>^>%logfile% 2^>^&1
 
:: *** Remove Log File
del /f /q %logfile%
 
:::::::::::::::::::::::::::::::::::::::::::::::::::::
:: \\fileserver\usershare\ANY_FOLDERS\sg\temp
:: modify the pameters PreUsrDir  PostUsrDir
:::::::::::::::::::::::::::::::::::::::::::::::::::::
set PreUsrDir=\\fileserver\usershare
set PostUsrDir=sg\temp
 
:: *** no log
::set log=
:: ***************************************
:: nothing done (SAFE TEST MODE)
set echo=echo
:: Comment the line above to Delete files
::****************************************
 
echo ****%date%**%time%****START %log%
if not exist  %PreUsrDir% goto :_ERR
for /f "delims=\"  %%U in ('dir /b /a:d %PreUsrDir%') do call :_DELallin "%PreUsrDir%\%%U\%PostUsrDir%"
echo ****%date%**%time%**** FINE   %log% 
 
goto :_END
 
:_DELallin
if not exist %1 goto :_NODIR
rem *** I want to delete also hidden or ReadOnly files and dirs
%echo%  attrib -h -s -r %1\*.* /s /d  %log% 
rem *** delete all files 
%echo%  del  /q /f /s %1\*.*         %log%
rem *** delete all dirs 
for /f "delims=\"   %%d in ('dir /b /a:d %1') do if exist %1\"%%d"  %echo%  rmdir %1\"%%d" /S /Q
:_NODIR
goto :_EOF
 
:_ERR
echo off
  echo ERROR
  echo ERROR %log%
goto _END
 
:_END
 
:_EOF

Open in new window

0
 
MorDrakkaCommented:
Hi,

First create your input file by typing: dir /b >> users.txt in the \fileserevr\usershare path.

Then you can say something like:

FOr /F %i in (users.txt) Do (cd \\fileserver\usershare\%i
del *.tmp)

Something like this, you need to have and enter after the cd command. you can put this in a batch file. just test with it a bit.

Hope this helps.
0
 
josbosAuthor Commented:
yeah this could work but i don't want this to do with a tekst document (like users.txt). i want to use the AD to read all usernames and that the script automatic removes the folder (or files in the folder) in the usershare.
0
Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

 
MorDrakkaConnect With a Mentor Commented:
Hi,

Ok to do that I created a vb script.

- create a textfile name it testscript.vbs c/p the content from below in it
- modify the Ad string with the details of your own AD
- Test some first!!


On Error Resume Next
 
Const ADS_SCOPE_SUBTREE = 2
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
 
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
 
objCommand.CommandText = _
    "SELECT HomeDirectory FROM 'LDAP://ou=users,ou=NL,dc=microsoft,dc=com' WHERE objectCategory='user'"  
Set objRecordSet = objCommand.Execute
 
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
   strHomedir = objRecordSet.Fields("HomeDirectory").Value
   
   SET objFolder = objFSO.GetFolder(strHomedir & "\sg\temp")
   objFSO.DeleteFolder(objFolder.Path), TRUE 
   SET objFolder = nothing 
    
   objRecordSet.MoveNext
Loop

Open in new window

0
 
MorDrakkaCommented:
Hi again,

For testing you can use the script below, this will only echo the homedir path in a cmd prompt.

Ciao

M
Do Until objRecordSet.EOF
   strHomedir = objRecordSet.Fields("HomeDirectory").Value
   wscript.echo strHomedir & "\sg\temp"
   objRecordSet.MoveNext
Loop

Open in new window

0
 
josbosAuthor Commented:
ok this will work (i tested it with the script below) but when i read this (correct me if i'm wrong) but this will delete the folder or only the files in it??
0
 
josbosAuthor Commented:
@mordakka & canali: thanks for both the answers. They work like hell and i give you both the points because you both got an answer that i could use or anyone could use. But i going to use the script from canali because the script doesn't delete the temp folder.
0
 
josbosAuthor Commented:
this was the script (s) i was looking for. thanks both!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.