如果文件存在于 Vbscript 中,如何在用增量重命名文件的同时移动文件? [英] How to move file while renaming it with incrementation if the file exists in Vbscript?

查看:17
本文介绍了如果文件存在于 Vbscript 中,如何在用增量重命名文件的同时移动文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了改进我的脚本Hackoo VIRUS Cleaner.vbs

In order to improve my script Hackoo VIRUS Cleaner.vbs

我创建了这个代码来测试它,然后在我的主脚本中实现它,但是,我在第 46 行遇到了一些问题,错误说 文件不存在"

I created this code to test it before to implement it in my main script, but, i get some issues with this at line N° 46 with Error Saying "File dosen't exists"

感谢您的帮助!

Option Explicit
Dim SFile,SFile1,SFile2,SFile3,SFile4,Folder,Title,Rename
Title = "Moving File to the Quarantaine Folder ..."
SFile = "E:\HackooTest\Nouveau dossier\VIRUS.vbs"
Folder = "E:\HackooTest\Quarantaine"
Rename = GetNameFile(sFile)
Call MoveFile2Quarantaine(sFile,Folder,Rename)
MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
'*************************************************************************************
SFile1 = "E:\HackooTest\Nouveau dossier(2)\VIRUS.vbs"
Rename = GetNameFile(sFile1)
Call MoveFile2Quarantaine(sFile1,Folder,Rename)
MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
'*************************************************************************************
SFile2 = "E:\HackooTest\Nouveau dossier(3)\VIRUS.vbs"
Rename = GetNameFile(sFile2)
Call MoveFile2Quarantaine(sFile2,Folder,Rename)
MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
'*************************************************************************************
SFile3 = "E:\HackooTest\Nouveau dossier(4)\VIRUS.vbs"
Rename = GetNameFile(sFile3)
Call MoveFile2Quarantaine(sFile3,Folder,Rename)
MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
'*************************************************************************************
SFile4 = "E:\HackooTest\Nouveau dossier(5)\VIRUS.vbs"
Rename = GetNameFile(sFile4)
Call MoveFile2Quarantaine(sFile4,Folder,Rename)
MsgBox "The File " & DblQuote(Rename) & " is moved to the Quarantaine Folder",VbInformation,Title
'*************************************************************************************
Sub MoveFile2Quarantaine(sFile,Folder,Rename)
    'On Error Resume Next
    Dim  FSO,Ws,Tab,i,j
    Set Ws = CreateObject("Wscript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Tab = Split(sFile,"\")
    'Rename = Tab(UBound(Tab))
    i = 0
    j = i + 1
    Do
        i = i + 1
        'If FSO.FolderExists(Folder) Then
            If Not FSO.FileExists(Folder & "\" & Rename & "_Infected.txt") Then
                FSO.GetFile(sFile).Move Folder & "\" & Rename & "_Infected.txt"
                Exit Sub
            ElseIf Not FSO.FileExists(Folder & "\" & Rename & "("& i &")" & "_Infected.txt") Then 'And FSO.FileExists(Folder & "\" & Rename & "_Infected.txt") Then
                FSO.GetFile(sFile).Move Folder & "\" & Rename & "("& j &")" & "_Infected.txt"
                Exit Sub
            ElseIf j = i Then
                j = j + 1
                If Not FSO.FileExists(Folder & "\" & Rename & "("& j &")" & "_Infected.txt") Then
                    FSO.GetFile(sFile).Move Folder & "\" & Rename & "("& j &")" & "_Infected.txt"
                    Exit Sub
                End if
            End If
        'End If
    Loop Until j = i
End Sub
'**********************************************************************************************
'Fonction pour ajouter les doubles quotes dans une variable
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************
Function GetNameFile(sFile)
    Dim  Tab
    Tab = Split(sFile,"\")
    GetNameFile = Tab(UBound(Tab))
End Function

推荐答案

我是这样解决我的问题的:

I solved my problem like that :

Option Explicit
Dim fso,Ws,sFiles,sFile,sFileName,Quarantaine,Title
Title = "Déplacement des fichiers suspects dans la quarantaine" 
Set fso = CreateObject("Scripting.FileSystemObject")
Set Ws = CreateObject("wscript.Shell")
Quarantaine = "e:\HackooTest\Quarantaine"
sFiles = Array( _
"e:\HackooTest\Folder1\VIRUS.vbs", _
"e:\HackooTest\Folder2\VIRUS.vbs", _
"e:\HackooTest\Folder3\VIRUS.vbs", _
"e:\HackooTest\Folder4\VIRUS.vbs", _
"E:\HackooTest\Folder5\VIRUS.vbs", _
"E:\HackooTest\Folder6\VIRUS.vbs" _
)

For Each sFile In sFiles
    If fso.FileExists(sFile) Then
        sFileName = GetNewName(sFile)
        fso.MoveFile sFile,sFileName 
        Ws.Popup "Le fichier " & DblQuote(sfile) & " est déplacé vers le dossier de quarantaine comme " & DblQuote(sFileName),"4",Title,VbInformation
    Else
        Ws.Popup DblQuote(sfile) & " n'existe pas !","2",Title,VbExclamation
    End If
Next
'**********************************************************************************************
Function GetNewName(sFile)
    Dim snamebase,sname,i,sTarget
    snamebase = Split(Right(sFile, Len(sFile) - InStrRev(sFile,"\")),".")(0)
    sname = snamebase
    i = 0
    While i < 100
        sTarget = Quarantaine & "\" & sname & "_Infected.txt"
        If fso.FileExists(sTarget) Then
            i = i + 1
            sName = snamebase & "(" & i & ")"
        Else
            GetNewName = sTarget
            Exit Function
        End If
    Wend
End Function
'**********************************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************

这篇关于如果文件存在于 Vbscript 中,如何在用增量重命名文件的同时移动文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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