VBScript 移动具有特定扩展名的文件 [英] VBScript to Move files with particular extension

查看:36
本文介绍了VBScript 移动具有特定扩展名的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个 VBscript,可以扫描文件夹中的文件并根据文件名中的关键字将文件移动到特定文件夹.

I currently have a VBscript that scans a folder for files and moves the files to particular folders depending on key words in the file name.

我目前需要脚本只扫描一级(即不递归扫描),我也需要搜索所有子文件夹.

I need currently the script only scans the one level (ie. doesn't scan recursively) and I need to to search all sub folders too.

有人可以帮我解决这个问题吗?

Can someone give me a hand with this?

自从编写此脚本后,我意识到我只需要根据文件名将具有特定扩展名的文件从特定文件夹和子文件夹移动到其他目录.例如,我只需要移动 .mp4 和 .avi 文件.

Since writing this script I have realized that I need to have this only move files with particular extensions from a particular folder and sub folders to other directories based on the file name. For example I need only .mp4 and .avi files to be moved.

有人可以帮我吗?我尝试了多种方法,但仍然无法使递归扫描和移动或特定于扩展的移动工作.

Can someone help me with this please? I have tried multiple things but still can't get the recursive scanning and moving or the extension specific moving working.

以下是我当前的脚本.

'========================================================
' Script to Move Downloaded TV Shows and Movies to
' correct folders based on wildcards in File Name
'========================================================

On Error Resume Next

Dim sTorrents, sTV, sMovie, sFile, oFSO

' create the filesystem object
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")

' Create Log File
Set objLog = oFSO.OpenTextFile("c:\temp\log.txt", 8, True)

' Set Variables
sTorrents = "C:\Temp\torrents\"
sTV = "C:\Temp\TV Shows\"
sMovie = "C:\Temp\Movies\"

' Scan each file in the folder
For Each sFile In oFSO.GetFolder(sTorrents).Files
' check if the file name contains TV Show Parameters
If InStr(1, sFile.Name, "hdtv", 1) OR InStr(1, sFile.Name, "s0", 1) <> 0 Then
    ' TV Show Detected - Move File
    objLog.WriteLine Now() & " - " & sFile.Name & " Detected as TV Show - Moving to " & sTV
    oFSO.MoveFile sTorrents & sFile.Name, sTV & sFile.Name
' Move all other Files to Movies Directory
Else objLog.WriteLine Now() & " - " & sFile.Name & " Detected as Movie - Moving to " & sMovie
    oFSO.MoveFile sTorrents & sFile.Name, sMovie & sFile.Name
End If

Next

If sTorrents.File.Count = 0 And sTorrents.SubFolders.Count = 0 Then
    objLog.WriteLine Now() & " - There is nothing left to Process..."
    objLog.Close
End If

推荐答案

一些注意事项:

Sub listfolders(startfolder)
Dim fs 
Dim fl1 
Dim fl2 

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fl1 = fs.GetFolder(startfolder)

    For Each fl2 In fl1.SubFolders
        Debug.Print fl2.Path

        ''process the files
        ProcessFiles fl2.Path 

        'Recursion: lists folders for each subfolder
        listfolders fl2.Path
    Next
End Sub

''Code copied from question
Sub ProcessFiles(sPath)
    ' Scan each file in the folder
    For Each sFile In oFSO.GetFolder(sPath).Files
        ' check if the file name contains TV Show Parameters
        If InStr(1, sFile.Name, "hdtv", 1) OR InStr(1, sFile.Name, "s0", 1) <> 0 Then
            ' TV Show Detected - Move File
            objLog.WriteLine Now() & " - " _
                  & sFile.Name & " Detected as TV Show - Moving to " & sTV
            oFSO.MoveFile sTorrents & sFile.Name, sTV & sFile.Name
        ' Move all other Files to Movies Directory
        Else 
            objLog.WriteLine Now() & " - " _
            & sFile.Name & " Detected as Movie - Moving to " & sMovie
            oFSO.MoveFile sTorrents & sFile.Name, sMovie & sFile.Name
        End If
    Next
End Sub

这篇关于VBScript 移动具有特定扩展名的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆