Поделиться через


Touching every file in every subdirectory

A friend recently asked me how to touch every file in a folder and subfolders.  Let's say he has an executible called "dosomething.exe" and wants to run that program against every file in the parent folder and subfolders.  Here's a quick script to do such a thing.  There's not much to the VBScript but I am posting because I know what it is like to be out in the field and need something quickly.  While this can be done multiple ways, I wrote this in VBScript because I did not know the client OS version and only had notepad handy at the time.  :)

 

On Error Resume Next ' Ignore errors such as access denied
Dim ObjShell, objFSO, objFolder, objStartFolder
Dim colFiles

Set ObjShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files

objStartFolder = "C:\jingalls" ' This is the parent directory

For Each objFile in colFiles
Next

ShowSubfolders objFSO.GetFolder(objStartFolder)

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        Set objFolder = objFSO.GetFolder(Subfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
            wscript.echo Subfolder.Path & "\" & objFile.Name
 set objWshScriptExec = objShell.Exec("%COMSPEC% /c c:\utils\dosomething.exe " & Subfolder.Path & "\" & objFile.Name)
 Set objStdOut = objWshScriptExec.StdOut
 strOutput = objStdOut.ReadAll
  WScript.Echo strOutput
        Next
        ShowSubFolders Subfolder
    Next
End Sub

Set objShell = Nothing
Set objFSO = Nothing
set objFolder = Nothing
set objStartFolder = Nothing
set colFiles = Nothing