need vbs help

Discussion in 'Software' started by red death68, Jun 17, 2011.

  1. red death68

    red death68 Command Sergeant Major

    ok so basicly iv decided to remove batch completly from my uninstaller so iv decided to make the thing completly vbs and hta i still have the hta from before but now i need help with the vbs what i need is for the vbs to do the following

    read a files only line
    save the content of file to a variable
    use the variable as a path to copy files
    but the final and main condition is i need it with a progress bar
     
  2. PC-XT

    PC-XT Master Sergeant

    I patched this together quickly, using some code from the other threads, but you probably get the idea:
    Code:
    <html><head><title>Installer</title><HTA:APPLICATION 
             SCROLL="no"
             SINGLEINSTANCE="yes"
             MaximizeButton="no"
             MinimizeButton="yes"
             Border="thin"
    		 BORDERSTYLE="complex"
        ><SCRIPT LANGUAGE="VBScript">
    window.resizeto 350, 100
    dim progress,total
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Sub Go
     'dim h
     'path="..\test"
     path=readFileLine()
     total=CountFiles(".")
     progress=0
     MoveFiles ".",path
    End Sub
    
    Sub MoveFiles(s,d)
     dim t
     set source=fso.getFolder(s)
     For Each file in source.Files
      progressBarText.innerHTML=file.path
      fso.copyFile file.Path,d&"\"&file.name
      progress=progress+1
      t=Round(progress/total*100)&"%"
      progressBar.style.width=t
      progressBarText.innerHTML=t&" ("&progress&"/"&total&")"
     Next
     For Each folder In source.SubFolders
      MoveFiles folder.Path,fso.createFolder(d&"\"&folder.name).Path
     Next
    End Sub
    
    'The following function is GermanOne's file counter code from http://forums.majorgeeks.com/showthread.php?t=237684
    Function CountFiles(strFolderName)
      If fso.FolderExists(strFolderName) Then
        Set objParentFolder = fso.GetFolder(strFolderName)
        On Error Resume Next
        iFileCount = objParentFolder.Files.Count
        For Each objSubFolder In objParentFolder.SubFolders
          iFileCount = iFileCount + CountFiles(objSubFolder.Path)
        Next
        On Error Goto 0
      Else
        iFileCount = 0
      End If
      CountFiles = iFileCount
    End Function
      </script><script language="JavaScript">
      function readfileline(){
       var h=fso.openTextFile("cfg.txt",1,true),//change the file name here from cfg.txt to whatever file has the line to read, doubling any backslashes, since this is js
     path=h.readLine();
     h.close();return path;
      }
      </script></head><body OnLoad="SetTimeout 'Go',20">
      <div style="position:relative;width:300;height:30px;background-color:black;border:inset red 3px"><div id="progressBar" style="position:absolute;top:0;left:0;width:0%;height:100%;background-color:green"></div><div id="progressBarText" style="position:absolute;top:0;left:0;width:100%;font:12pt arial;font-weight:bold;text-align:center;color:blue"
    >Loading installer...</div></div>
      </body>
    </html>
    Is that what you wanted?

    (I had to use JS to get the one function working on my system.)

    It might work better to make a list of files to copy, then use setTimeout to put a pause of maybe 20ms between each file to allow the display to update better. This one seems to work for me, but I didn't test with large files. If it doesn't work right, I can try implementing the list idea or something later.
     
  3. GermanOne

    GermanOne Guest

    Yesterday I wrote a similar code:
    Code:
    <html>
      <head>
        <title>Progress Bar</title>
        <HTA:APPLICATION>
      </head>
    
      <script language = "VBScript">
        window.resizeTo 800, 620
        Dim i, iMax
        strFileFullName = "path.txt"
        strDestFullName = "abc"
    
        Sub start
          arrLines = get_line_array(strFileFullName)
          If VarType(arrLines) = 0 Then 
            MsgBox "File """ & strFileFullName & """ Not Found Or Empty", vbCritical, "Error"
            Exit Sub
          End If
          strSourceFullName = arrLines(0)
          If strSourceFullName = "" Then
            MsgBox "File """ & strFileFullName & """ Is Empty", vbCritical, "Error"
            Exit Sub
          End If
          arrItems = get_folder_items_array(strSourceFullName)
          If VarType(arrItems) = 0 Then
            MsgBox "Folder """ & strSourceFullName & """ Not Found Or Empty", vbCritical, "Error"
            Exit Sub
          End If
          iMax = UBound(arrItems) + 1
          i = 0
          pb_bar.style.width = Round(i * 300 / iMax, 0) & "px"
          pb_text.innerHTML = Round(i * 100 / iMax, 0) & "%"
          For i = 1 To iMax
            copy strDestFullName, strSourceFullName, arrItems(i - 1)
          Next
        End Sub
    
        Function get_line_array(strFileName)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If objFSO.FileExists(strFileName) Then
            On Error Resume Next
            arrLines = Split(objFSO.OpenTextFile(strFileName, 1).ReadAll, vbCrLf)
            On Error Goto 0
          End If
          get_line_array = arrLines
        End Function
    
        Function get_folder_items_array(strFolderFullName)
          Set objFolder = CreateObject("Shell.Application").NameSpace(strFolderFullName)
          If (Not objFolder Is Nothing) Then
            Set objFolderItems = objFolder.Items()
            If (Not objFolderItems Is Nothing) Then
              For j = 0 To objFolderItems.Count - 1
                ReDim Preserve arrItems(j)
                arrItems(j) = objFolderItems.Item(j).Name
              Next
            End If
          End If
          get_folder_items_array = arrItems
        End Function
    
        Sub copy(strDestFullName, strSourceFullName, FName)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If Not objFSO.FolderExists(strDestFullName) Then objFSO.CreateFolder strDestFullName
          showname.innerHTML = FName
          If objFSO.FolderExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFolder strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          If objFSO.FileExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFile strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          pb_bar.style.width = Round(i * 300 / iMax, 0) & "px"
          pb_text.innerHTML = Round(i * 100 / iMax, 0) & "%"
        End Sub
    
      </script>
    
      <body>
        <input id="startbutton" type="button" value="Start Copy" onclick="start">
        <br><br>
        <div id="pb_background" style="position:relative; width:300px; height:30px; background:#AAAAAA;">
          <div id="pb_bar" style="position:absolute; width:0px; height:30px; background:#3333DD;">
            <div
             id="pb_text"
             style="position:absolute; top:0; left:0; padding-top:5px; width:300px; font:12pt arial; font-weight:bold; text-align:center; color:#FFFFFF;"
            >
            </div>
          </div>
        </div>
        <div id="showname"></div>
      </body>
    </html>
    
    The content of path.txt is 123 which is a my source folder with some big files and folders. The destination folder is abc.

    It works except one issue: The progress bar won't update while the code is busy. I'm sure your code, PC-XT, will show the same effect even if I didn't test it.
    I tried to source out the changing of the progress bar to another sub routine and called it using window.setTimeout to get it run in a different program thread, but without success.
    Has anybody an idea how to force window updating while the code is running?

    Regards
    GermanOne
     
  4. GermanOne

    GermanOne Guest

    OK, found a way. But it will slow down your code some hundred milliseconds for each step (so, only for progress bar fetishists :-D).
    Code:
    <html>
      <head>
        <title>Progress Bar</title>
        <HTA:APPLICATION>
      </head>
    
      <script language = "VBScript">
        window.resizeTo 800, 620
        Dim i, iMax
        strFileFullName = "path.txt"
        strDestFullName = "abc"
    
        Sub start
          arrLines = get_line_array(strFileFullName)
          If VarType(arrLines) = 0 Then 
            MsgBox "File """ & strFileFullName & """ Not Found Or Empty", vbCritical, "Error"
            Exit Sub
          End If
          strSourceFullName = arrLines(0)
          If strSourceFullName = "" Then
            MsgBox "File """ & strFileFullName & """ Is Empty", vbCritical, "Error"
            Exit Sub
          End If
          arrItems = get_folder_items_array(strSourceFullName)
          If VarType(arrItems) = 0 Then
            MsgBox "Folder """ & strSourceFullName & """ Not Found Or Empty", vbCritical, "Error"
            Exit Sub
          End If
          iMax = UBound(arrItems) + 1
          i = 0
          showname.innerHTML = ""
          pb_bar.style.width = Round(i * 300 / iMax, 0) & "px"
          pb_text.innerHTML = Round(i * 100 / iMax, 0) & "%"
          For i = 1 To iMax
            copy strDestFullName, strSourceFullName, arrItems(i - 1)
          Next
          showname.innerHTML = "Ready."      
          DoEvents
        End Sub
    
        Function get_line_array(strFileName)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If objFSO.FileExists(strFileName) Then
            On Error Resume Next
            arrLines = Split(objFSO.OpenTextFile(strFileName, 1).ReadAll, vbCrLf)
            On Error Goto 0
          End If
          get_line_array = arrLines
        End Function
    
        Function get_folder_items_array(strFolderFullName)
          Set objFolder = CreateObject("Shell.Application").NameSpace(strFolderFullName)
          If (Not objFolder Is Nothing) Then
            Set objFolderItems = objFolder.Items()
            If (Not objFolderItems Is Nothing) Then
              For j = 0 To objFolderItems.Count - 1
                ReDim Preserve arrItems(j)
                arrItems(j) = objFolderItems.Item(j).Name
              Next
            End If
          End If
          get_folder_items_array = arrItems
        End Function
    
        Sub copy(strDestFullName, strSourceFullName, FName)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If Not objFSO.FolderExists(strDestFullName) Then objFSO.CreateFolder strDestFullName
          showname.innerHTML = "Copy: """ & FName & """"
          DoEvents
          If objFSO.FolderExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFolder strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          If objFSO.FileExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFile strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          pb_bar.style.width = Round(i * 300 / iMax, 0) & "px"
          pb_text.innerHTML = Round(i * 100 / iMax, 0) & "%"
        End Sub
    
        Sub DoEvents()
          CreateObject("WScript.Shell").Run "%comspec% /c exit", 0, True
        End Sub
      </script>
    
      <body>
        <input id="startbutton" type="button" value="Start Copy" onclick="start">
        <br><br>
        <div id="pb_background" style="position:relative; width:300px; height:30px; background:#AAAAAA;">
          <div id="pb_bar" style="position:absolute; width:0px; height:30px; background:#3333DD;">
            <div
             id="pb_text"
             style="position:absolute; top:0; left:0; padding-top:5px; width:300px; font:12pt arial; font-weight:bold; text-align:center; color:#FFFFFF;"
            >
            </div>
          </div>
        </div>
        <div id="showname"></div>
      </body>
    </html>
    
    Regards
    GermanOne
     
  5. red death68

    red death68 Command Sergeant Major

    thanks guys ill try them i also found this code which works pretty well to since i just needed progress displayed the bar would be nice but this uses the default ui of windows check it out

    Code:
    Set wshFSO=Createobject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
     
    Const FOF_CREATEPROGRESSDLG = &H0&
    'directory files are to be copied to
    strPictureTargetDIR = "C:\testfolder" 
    Set objFolder = objShell.NameSpace(strPictureTargetDIR) 
     
    'directory files are to be copied from
    objFolder.CopyHere "C:\test\*.mp3", FOF_CREATEPROGRESSDLG
     
     
    msgbox "Copy Complete!"
    now id just like the be able to change the copy text because it might make some people nervous if a copying window appears out of nowheres
     
  6. red death68

    red death68 Command Sergeant Major

    ok i was working on the side to combine 2 scripts and this is what i got but i get a object required error and cant figure out why its probably a simple mistake but im new to vbs so here's the code

    Code:
    Option Explicit
    
    Const conForReading = 1
    
    'Declare variables
    Dim objFSO, objReadFile, contents, wshFSO, objshell, strPictureTargetDIR, objFolder
    
    'Set Objects
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objReadFile = objFSO.OpenTextFile("test.txt", 1, False)
    
    'Read file contents
    contents = objReadFile.ReadAll
    
    'Close file
    objReadFile.close
    
    'Cleanup objects
    Set objFSO = Nothing
    Set objReadFile = Nothing
    
    Set wshFSO = Createobject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
     
    Const FOF_CREATEPROGRESSDLG = &H0&
    'directory files are to be copied to
    strPictureTargetDIR = "contents" 
    Set objFolder = objShell.NameSpace(strPictureTargetDIR) 
     
    'directory files are to be copied from
    objFolder.CopyHere "C:\test\*.mp3", FOF_CREATEPROGRESSDLG
    
    'Quit script
    WScript.Quit()
     
  7. PC-XT

    PC-XT Master Sergeant

    Yes, the failure to update the display is what I was talking about in my post. I hadn't really tested it, since my files copied so fast. I would get one or possibly two updates total. Here is the change I suggested, which seems to update for each file: (I used GermanOne's code, because it is much more finished than mine. My changes are identified by non-indented comments.)
    Code:
    <html>
      <head>
        <title>Progress Bar</title>
        <HTA:APPLICATION>
      </head>
    
      <script language = "VBScript">
        window.resizeTo 800, 620
        Dim i, iMax
        strFileFullName = "path.txt"
        strDestFullName = "abc"
    	
    'moved setup outside of start, though could be argued this uses too much global space...
          arrLines = get_line_array(strFileFullName)
          If VarType(arrLines) = 0 Then 
            MsgBox "File """ & strFileFullName & """ Not Found Or Empty", vbCritical, "Error"
    	  Else
           strSourceFullName = arrLines(0)
           If strSourceFullName = "" Then
            MsgBox "File """ & strFileFullName & """ Is Empty", vbCritical, "Error"
           Else
            arrItems = get_folder_items_array(strSourceFullName)
            If VarType(arrItems) = 0 Then
             MsgBox "Folder """ & strSourceFullName & """ Not Found Or Empty", vbCritical, "Error"
            Else
             iMax = UBound(arrItems)
    'removed +1 from previous line and restructured if statements
            End If
           End If
          End If
    
    	Sub start
          pb_bar.style.width = "0px"
          pb_text.innerHTML = "0%"
          SetTimeout "copyR 0",20
    'only do first line here, will auto-loop in copyR
        End Sub
    
        Function get_line_array(strFileName)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If objFSO.FileExists(strFileName) Then
            On Error Resume Next
            arrLines = Split(objFSO.OpenTextFile(strFileName, 1).ReadAll, vbCrLf)
            On Error Goto 0
          End If
          get_line_array = arrLines
        End Function
    
        Function get_folder_items_array(strFolderFullName)
          Set objFolder = CreateObject("Shell.Application").NameSpace(strFolderFullName)
          If (Not objFolder Is Nothing) Then
            Set objFolderItems = objFolder.Items()
            If (Not objFolderItems Is Nothing) Then
              For j = 0 To objFolderItems.Count - 1
                ReDim Preserve arrItems(j)
                arrItems(j) = objFolderItems.Item(j).Name
              Next
            End If
          End If
          get_folder_items_array = arrItems
        End Function
    
        Sub copyR(p)
          if p>iMax then
    	   pb_bar.style.width = "300px"
               pb_text.innerHTML = "100%"
    	   exit sub
          End If
          dim FName
          FName=arrItems(p)
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          If Not objFSO.FolderExists(strDestFullName) Then objFSO.CreateFolder strDestFullName
          showname.innerHTML = FName
          If objFSO.FolderExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFolder strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          If objFSO.FileExists(strSourceFullName & "\" & FName) Then
            objFSO.CopyFile strSourceFullName & "\" & FName, strDestFullName & "\", True
          End If
          pb_bar.style.width = Round(p * 300 / iMax, 0) & "px"
          pb_text.innerHTML = Round(p * 100 / iMax, 0) & "%"
          SetTimeout "copyR "&(p+1),20
    'automatically copy next file after short pause, hopefully allowing display update
        End Sub
    
    'to make it automatically start, add onload="start" to body tag, and remove the first input tag.
      </script>
    
      <body>
        <input id="startbutton" type="button" value="Start Copy" onclick="start">
        <br><br>
        <div id="pb_background" style="position:relative; width:300px; height:30px; background:#AAAAAA;">
          <div id="pb_bar" style="position:absolute; width:0px; height:30px; background:#3333DD;">
            <div
             id="pb_text"
             style="position:absolute; top:0; left:0; padding-top:5px; width:300px; font:12pt arial; font-weight:bold; text-align:center; color:#FFFFFF;"
            >
            </div>
          </div>
        </div>
        <div id="showname"></div>
      </body>
    </html>
    You could try changing the number of ms between each file to see if it can be shortened or if it doesn't update as much on a slower system...
     
    Last edited: Jun 18, 2011
  8. GermanOne

    GermanOne Guest

    Very good idea, PC-XT. I guess 20 ms should be enough for slow systems as well. You have to interrupt the run for each item, thats the whole trick. I tried with 0 ms and it works like a charm ;)
     
  9. PC-XT

    PC-XT Master Sergeant

    Does this work?
    Code:
    Option Explicit
    
    'Declare variables
    Dim objFSO, objReadFile, contents, objShell, objFolder
    
    'Set Objects
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objReadFile = objFSO.OpenTextFile("test.txt", 1, False)
    
    'Read file contents
    contents = objReadFile.ReadAll
    
    'Close file
    objReadFile.close
    
    'Cleanup objects
    Set objFSO = Nothing
    Set objReadFile = Nothing
    
    Set objShell = CreateObject("Shell.Application")
     
    Const FOF_CREATEPROGRESSDLG = &H0&
    'directory files are to be copied to
    Set objFolder = objShell.NameSpace(contents) 
     
    'directory files are to be copied from
    objFolder.CopyHere "C:\test\*.mp3", FOF_CREATEPROGRESSDLG
    
    'Quit script
    WScript.Quit()
     
  10. GermanOne

    GermanOne Guest

    It will work if
    - the code is saved in a stand allone (.vbs) file. Otherwise you could delete the last line for using it in HTAs.
    - test.txt contains only one line without CR LF (line break) at the end of the line (ReadAll is dangerous, use ReadLine instead or create an array like I did)
    - the destination folder already exists

    Regards
    GermanOne
     
  11. red death68

    red death68 Command Sergeant Major

    it works perfectly and german all those conditions were all ready met before i posted the other script
     
  12. red death68

    red death68 Command Sergeant Major

    sorry for double post but found one little thing how can i make it copy without overwrite confirmation?
     
  13. GermanOne

    GermanOne Guest

    You need an additional file operation flag. Have a look at these msdn references
    http://msdn.microsoft.com/en-us/library/bb787866.aspx
    http://msdn.microsoft.com/en-us/library/bb759795.aspx

    Adapted code:
    Code:
    Option Explicit
    
    'Declare variables
    Dim objFSO, objReadFile, contents, objShell, objFolder
    
    'Set Objects
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objReadFile = objFSO.OpenTextFile("test.txt", 1, False)
    
    'Read file contents
    contents = objReadFile.ReadAll
    
    'Close file
    objReadFile.close
    
    'Cleanup objects
    Set objFSO = Nothing
    Set objReadFile = Nothing
    
    Set objShell = CreateObject("Shell.Application")
     
    Const FOF_CREATEPROGRESSDLG = &H0&
    Const FOF_NOCONFIRMATION = &H10&
    'directory files are to be copied to
    Set objFolder = objShell.NameSpace(contents) 
     
    'directory files are to be copied from
    objFolder.CopyHere "C:\test\*.mp3", FOF_CREATEPROGRESSDLG + FOF_NOCONFIRMATION
    
    'Quit script
    WScript.Quit
    
    Regards
    GermanOne
     
  14. red death68

    red death68 Command Sergeant Major

    this code still asks for overwrite confirmation any ideas?
     
  15. GermanOne

    GermanOne Guest

    Well, my Win7 accepts none of these flags, no idea why. For that reason I use the methodes of the FileSystemObject instead (but there is no way to show the Windows progress bar). You could make some tests with other flags (have a look at my links above) or you could delete the old files before copying.

    Regards
    GermanOne
     
  16. red death68

    red death68 Command Sergeant Major

    deletion might be the best option
     
  17. GermanOne

    GermanOne Guest

    Two possibilities how to do that:

    You could delete the folder and then create it new
    Code:
    strFolder = "C:\test"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ' Delete folder if exists
    If objFSO.FolderExists(strFolder) Then objFSO.DeleteFolder strFolder, True
    
    ' Regardless create it new for further usage
    objFSO.CreateFolder strFolder
    
    or you could only delete the files inside
    Code:
    strFolder = "C:\test"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ' Create it if not exists
    If Not objFSO.FolderExists(strFolder) Then objFSO.CreateFolder strFolder
    
    ' Delete each file inside
    Set objFSOFolder = objFSO.GetFolder(strFolder)
    For Each objFile In objFSOFolder.Files
      objFile.Delete
    Next
    
    Regards
    GermanOne
     
  18. red death68

    red death68 Command Sergeant Major

    thanks german it worked perfect once i added the variables with the dim function since i had option explicit in code
     
  19. GermanOne

    GermanOne Guest

    Are you still awake? Sometimes it seems we never sleep :-D
     
  20. red death68

    red death68 Command Sergeant Major

    im a night owl so im normaly on until 2am till like 6am depending if schools in session
     
  21. GermanOne

    GermanOne Guest

    Same like me. Last night I slept only 3 hours ... On weekend I will regain my lost sleep ( hopefully :-D ).
     
  22. red death68

    red death68 Command Sergeant Major

    ya i try the weekend sleep thing but family never lets me sleep =( so im always exhausted thats y i slept through high school
     
  23. GermanOne

    GermanOne Guest

    Geez I remember that time (a quarter century ago). Now I would be fired ... Fortunately I have enough pressure not to be tired at work.
     
  24. red death68

    red death68 Command Sergeant Major

    lol i just graduated on the 12 of june

    but ya if i got a job in computers with the night shift id be perfectly fine because I am always wide awake at night
     
  25. GermanOne

    GermanOne Guest

    Congratulations :highfive

    I wish somebody would invent such a job. *dream...dream...dream...dream*
     
  26. red death68

    red death68 Command Sergeant Major

    lol im with you that would be a dream job for me
     
  27. red death68

    red death68 Command Sergeant Major

  28. red death68

    red death68 Command Sergeant Major

    1 more question the variable it writes will contain the path
    C:\Program Files\Z8Games\CrossFire\
    but i need to make it say
    C:\Program Files\Z8Games\CrossFire\rez\Snd2\
    any idea? preferably something manipulatable because it needs to be changeable for several other paths all with the main root of C:\Program Files\Z8Games\CrossFire\
     
  29. GermanOne

    GermanOne Guest

    lol

    Use the & operator.
    Code:
    var1 = "C:\Program Files\Z8Games\CrossFire\"
    var2 = var1 & "rez\Snd2\"
    
    Regards
    GermanOne
     
  30. red death68

    red death68 Command Sergeant Major

    ok ty im used to batch where i can just type varrez\Snd2
     
  31. GermanOne

    GermanOne Guest

    If the current working directory is C:\Program Files\Z8Games\CrossFire then you can do the same in VBScript.
    Also, you can change the working directory (like CD command in batch):
    Code:
    Set objWSH = CreateObject("WScript.Shell")
    objWSH.CurrentDirectory = "C:\Program Files\Z8Games\CrossFire"
    
    Regards
    GermanOne
     

MajorGeeks.Com Menu

Downloads All In One Tweaks \ Android \ Anti-Malware \ Anti-Virus \ Appearance \ Backup \ Browsers \ CD\DVD\Blu-Ray \ Covert Ops \ Drive Utilities \ Drivers \ Graphics \ Internet Tools \ Multimedia \ Networking \ Office Tools \ PC Games \ System Tools \ Mac/Apple/Ipad Downloads

Other News: Top Downloads \ News (Tech) \ Off Base (Other Websites News) \ Way Off Base (Offbeat Stories and Pics)

Social: Facebook \ YouTube \ Twitter \ Tumblr \ Pintrest \ RSS Feeds