Vbs - 文件Cont \文件删除

时间:2016-05-20 23:15:57

标签: vbscript

我正在创建一个人脚本读取文件夹中的文件,(Scripting.FileSystemObject),但我想关联一个indice inpubox类型int来确定我将在屏幕上写的文件夹中的哪个文件。 / p>

Ex:indice = inputbox ""←4抓取文件夹4中的indice文件并在屏幕上显示您的名字。 我想知道这是否可行,因为已经尝试过多种方式甚至是矩阵,但没有结果。

这和我的代码。我不知道该去哪里!

Dim sFO, NovaPasta, Folder,File, Indice          
Dim inpast(4)

'Setup

Set sFO =  CreateObject("Scripting.FileSystemObject")
Set Folder = sFo.GetFolder("C:\Users\502526523\Documents\Control")
NovaPasta = "Control"

'Development

If Not sFO.FolderExists (NovaPasta) = True Then
  sFO.CreateFolder (NovaPasta)
  Wscript.Sleep 900 
  WScript.Echo "Pasta Criada"
Else
  WScript.Echo "Pasta Existente "
End If

' Line Verificas a quantidade de inpastas dentro da pasta, se > 5
' deleta os exedentes com data mais antiga

For Each file In folder.Files
  If Folder.Files.Count > 5 And (DateDiff("d", file.DateLastModified, Now) > 7) Then
    WScript.Echo  (file.Name & vbLf)
    WScript.Echo ("Total files :" & Folder.Files.Count)
    File.Delete
  End If
Next

For Each file In folder.Files
  inpast(0) = (file.Name)
  inpast(1) = (file.Name)
  inpast(2) = (file.Name)
  inpast(3) = (file.Name)
  inpast(4) = (file.Name)

  Indice = Inputbox ("Digite o valor do Indice de 0...30")

  Select Case Indice
    Case 0
      WScript.Echo inpast(0)
    Case 1
      WScript.Echo inpast(1)
    Case 2
      WScript.Echo inpast(2)
    Case 3
      WScript.Echo inpast(3)
    Case 4
      WScript.Echo inpast(4)
  End Select
Next

2 个答案:

答案 0 :(得分:0)

Set fso = CreateObject("Scripting.FileSystemObject")
Dirname = InputBox("Enter Dir name")
'Searchterm = Inputbox("Enter search term")
ProcessFolder DirName

Sub ProcessFolder(FolderPath)
'    On Error Resume Next
    Set fldr = fso.GetFolder(FolderPath)
    msgbox fls.count
    Msgbox fls.item("computerlist.txt") 
End Sub

做第7次

    Set Fls = fldr.files

    For Each thing in Fls
        Count = Count + 1
        If count = 7 then msgbox Thing.Name & " " & Thing.DateLastModified 
    Next

答案 1 :(得分:0)

仍不确定我是否正确理解了您的问题。你的意思是你有一个文件名列表,你想显示与用户通过InputBox输入的号码相对应的文件名?如果这是您想要的,您应该像这样更改第二个For Each循环:

i = 0
For Each file In folder.Files
  inpast(i) = file.Name
  i = i + 1
Next

Indice = InputBox("Digite o valor do Indice de 0...30")
WScript.Echo inpast(CInt(Indice))

但请注意,第一个For Each循环中的条件并不能保证循环后只剩下5个文件。如果由于某种原因,该文件夹包含超过5个在过去7天内修改过的文件,则第二个循环将失败并显示“下标超出范围”错误。

有几种方法可以解决这个问题:

  • Dynamically resize inpast数组,因此它可以容纳超过5个项目。
  • 按照上次修改日期(例如like this)对文件夹中的文件进行排序,并删除除最近5个文件以外的所有文件。
  • 在5 th 迭代(For Each)之后切断第二个Exit For循环。

另请注意,您应该清理输入。 (当用户输入文字,数字无效或按“取消”时会发生什么?)