-1

要件がありますが、どうすればよいかわかりません。指定したディレクトリ内の特定のファイルを検索するために、VBScript を作成する必要があります。ファイルが見つかった場合は、別のディレクトリ (アーカイブ) に移動する必要があります。

たとえば、ディレクトリ C:\Transfer にファイル Z001_130711.txt があります。ファイル名の最初の 4 文字は常に同じですが、変更されるのは最後の 6 文字です。ご覧のとおり、ファイルが作成された日付です。 /走る。

ファイルを移動する前に、他にいくつかの作業を行う必要があります。そのために、VBScript コードを既に作成しています。

完了したら、C:\Transfer\Archive に移動する必要があります。これは私が立ち往生していて、それを行う方法がわかりません。

どんな助けでも本当に感謝します。

4

1 に答える 1

0

これでほとんどの方法が得られるはずです。「If UCase(Right(objFile.Name, 4)) = ".VBP" Then」というフレーズの正しい置換を見つける必要があります。

また、宛先ファイルには「.bak」が追加されています。それを削除する必要があります。

ファイルのリストを Dictionary に配置する理由は、現時点ではわかりません。処理されたファイルと処理されなかったファイルのリストを取得できるようにする必要があるほど、プロセスが頻繁に失敗することに関係していたと思います。

Option Explicit

Dim dicFiles 
Set dicFiles = CreateObject("Scripting.Dictionary")

Private Sub AddFile(objFile)
  If dicFiles Is Nothing Then
    Set dicFiles = CreateObject("Scripting.Dictionary")
  End If
  If Not dicFiles.Exists(objFile.Path) Then
    dicFiles.Add objFile.Path, "False"
  End If
End Sub

  Dim strRootPath 'As String
  Dim objFSO 'As New FileSystemObject
  Dim objFile 'As File
  Dim i 'As Integer
  Dim iMax 'as integer

  strRootPath = "C:\Transfer"
  Dim objFolder' As Folder
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolder = objFSO.GetFolder(strRootPath)

  'MsgBox "" & objFolder.Files.Count & " files in folder " & objFolder.Path
  For Each objFile In objFolder.Files
    'MsgBox "Filespec: " & objFile.Name
    If UCase(Right(objFile.Name, 4)) = ".VBP" Then 
      'MsgBox "Adding file " & objFile.Name
      AddFile objFile
    End If
  Next

  Dim arrFiles '() As Variant
  arrFiles = dicFiles.Keys

  'MsgBox "UBound(arrfiles)=" & UBound(arrFiles)

  Dim fsIn 'As String
  Dim fsOut 'As String
  Dim strFilespec 'As String
  For i = 0 To UBound(arrFiles)
    Set objFile = objFSO.GetFile(arrFiles(i))
    strFilespec = arrFiles(i)
    fsOut = strFilespec & ".bak"
    If objFSO.FileExists(fsOut) Then
      objFSO.DeleteFile fsOut, True  'True = Force
    End If

    fsIn = strFilespec
    objFSO.MoveFile fsIn, fsOut

  Next

  Set objFSO = Nothing
于 2013-07-11T19:08:10.027 に答える