[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

file/folder delete question, with a space in the folder name

Posted on 2009-05-05
2
Medium Priority
?
456 Views
Last Modified: 2012-05-06
Hi I run this code to delete files and folders, it works ok with I type in cmd:
cscript DeleteFiles.vbs d:\logfiles 31 /R,

but when i type a folder with space in the name such as 'log files' or 'tom new house'
cscript DeleteFiles.vbs d:\log files 31 /R

it gave me 'Age parameter must be numeric' warning.

i think the space in the folder name caused the problem, but I can not change the folder name.
does anyone know how to modify the code?
thanks a lot!!

Robin
'************************************************************************
'*
'*	This script will loop over all files in the specified folder 
'*	and will delete any old than the specified age
'*	Care must be taken with this script as it will delete files 
'*	without prompts. 
'*
'*	Usage: 
'*	DeleteFiles.vbs [path] [age] [/R] 
'*	[Path] Specifies the path to process
'*	[Age] Specified the age of files in day which will be deleted
'*
'*	/R	Deletes files recursively. All Files under the specified folder older than specified age will be deleted. 
'*
'* 	WARNING: THIS WILL DELETE FILES WITHOUT ANY PROMPTS. DO NOT RUN THIS ON CRITICAL SYSTEM FOLDERS
'*	Example: cscript DeleteFiles.vbs d:\logfiles 31 /R
'*
'************************************************************************
 
 
 
 
dim filecnt 
dim age
dim recursive
dim path 
filecnt = 0 
if WScript.Arguments.Count <2 then 
	WScript.Echo "Usage: "
	WScript.Echo "DeleteFiles.vbs [Path] [Age] [/R]" & vbcrlf 
	Wscript.Echo "[Path] Specifies the path to process"
	Wscript.Echo "[Age] Specified the age of files in day which will be deleted" & vbcrlf 
	wScript.Echo "/R	Deletes files recursively. All Files under the specified folder older than specified age will be deleted. " & vbcrlf 
	Wscript.Echo "Example: cscript DeleteFiles.vbs d:\logfiles 31 /R" & vbcrlf 
	wscript.Echo "WARNING: THIS WILL DELETE FILES WITHOUT ANY PROMPTS. DO NOT RUN THIS ON CRITICAL SYSTEM FOLDERS"
	wscript.Echo ""
	wscript.quit(0)
else 
 
	if NOT isNumeric(wscript.arguments(1)) then 
		wScript.Echo "Age parameter must be numeric"
		wscript.quit(0)
	else 
		path = wscript.arguments(0)
		'validate path parameter ? 
		age = cint(wscript.arguments(1))
		if wscript.arguments.count = 3 then 
			if lcase(wscript.arguments(2)) = "/r" then 
				recursive = "/r"
				wscript.echo "Recursive Mode"
			end if 
		end if 
		recursefiles path
	end if 
end if 
 
 
wscript.echo filecnt  & " files were processed."
 
 
Sub RecurseFiles(Path)
	Const FOR_READING = 1
	strFolder = path
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objFolder = objFSO.GetFolder(strFolder)
	wscript.echo objFolder.Path
	Set colFiles = objFolder.Files
	For Each objFile In colFiles
		ProcessFile (objFile)
	Next
	if recursive= "/r" then 
		ShowSubFolders (objFolder)
	end if 
End Sub
 
Sub ProcessFile(file)
FileAge1 = DateDiff("d",file.DateLastModified, now )
FileAge2 = DateDiff("d",file.DateCreated, now )
FileAge3 = DateDiff("d",file.DateLastAccessed, now )
if FileAge1  > Age and FileAge2 > age and FileAge3 > age then 
      on error resume next 
      filecnt = filecnt + 1
      wscript.echo "deleting " & file.Path & " " & file.datelastmodified 
      file.delete true 'true will force the deletion 
      on error goto 0 
end if 
End Sub
 
 
Sub ShowSubFolders(objFolder)
  Set colFolders = objFolder.SubFolders
  For Each objSubFolder In colFolders
    wscript.echo objSubFolder.Path
    Set colFiles = objSubFolder.Files
    For Each objFile In colFiles
      ProcessFile (objFile)
    Next
    ShowSubFolders (objSubFolder)
  If objSubFolder.Files.Count = 0 And objSubFolder.SubFolders.Count = 0 Then
    'the level above this is empty
      on error resume next 
      wscript.echo "deleting " & objSubFolder
        objSubFolder.Delete true 
      on error goto 0 
    End If
  Next
End Sub

Open in new window

0
Comment
Question by:robinyanwang
2 Comments
 
LVL 10

Accepted Solution

by:
TakedaT earned 1000 total points
ID: 24309002
Try to enclose the path in " " like so.

cscript DeleteFiles.vbs "d:\log files" 31 /R
0
 

Author Closing Comment

by:robinyanwang
ID: 31578216
thanks.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question