VmWare: vbscript pour defrag & shrink de tous les vmdk (batch)
Option Explicit
‘==========================================================================
‘
‘
‘ NAME: <vmware_compressor.vbs>
‘
‘ AUTHOR: Mathieu CHATEAU
‘ DATE : 18/04/2008
‘ VERSION:0.1
‘
‘ COMMENT: <Defragment and shrink all VMDK files from a root folder>
‘
‘==========================================================================
Dim VmWareInstallFolder,VmdkRootFolder
‘VmWare Workstation installation Folder
VmWareInstallFolder= »C:\ » & « »" » & « Program Files (x86) » & « »" » & « \VMware\ » & « »" » & « VMware Workstation » & « »" »
‘Where are all these vmdk files to cleanup (recursive)
VmdkRootFolder= »F:\vmware »
» » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » »
‘Do not touch from here
Const OpenAsASCII = 0
Const FailIfNotExist = 0
Const ForReading = 1
Dim sTemp, sTempFile, objShell, objFSO,f,f1,sf,fc,fFile,sResults
Set objShell = CreateObject (« wscript.shell »)
Set objFSO = CreateObject(« Scripting.FileSystemObject »)
sTemp = objShell.ExpandEnvironmentStrings(« %TEMP% »)
sTempFile = sTemp & « \vmwarecleaner.tmp »
ShowFolderList(VmdkRootFolder)
Function ShowFolderList(folderspec)
Dim f1
Set f = objFSO.GetFolder(folderspec)
Set sf = f.SubFolders
For Each f1 in sf
ShowFolderList(f1.path)
ShowFileList(f1.path)
Next
End Function
Function ShowFileList(folderspec)
Set f = objfso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
if instr(1,f1.name, ».vmdk »,1) then
wscript.echo « ################################################# »
wscript.echo « Defrag: » & f1.path
objShell.run « %comspec% /c » & VmWareInstallFolder & « \ » & « vmware-vdiskmanager.exe » & » -d » & f1.path & » > » & sTempFile, 0 , True
Displaylog
wscript.echo « Shrink: » & f1.path
objShell.run « %comspec% /c » & VmWareInstallFolder & « \ » & « vmware-vdiskmanager.exe » & » -k » & f1.path & » > » & sTempFile, 0 , True
Displaylog
End if
Next
End Function
Function Displaylog
Set fFile = objFSO.OpenTextFile(sTempFile, ForReading, FailIfNotExist, OpenAsASCII)
sResults = fFile.ReadAll
fFile.Close
objFSO.DeleteFile(sTempFile)
wscript.echo sResults
End Function
Popularity: 6% [?]