0

週に1回受け取るPDFファイルがたくさんあります。

これらのファイルの中には、拡張子が間違っているか、まったくないものがあります。

file1.pdd、file.ptfなどのような場合もあります

以下のスクリプトは、すべてのファイルを調べて、拡張子が.pdfでないファイルを探すことになっています。

見つかった場合は、正しい拡張子で修正してください。

たとえば、コードはfiled.pddをfile1.pdfに変更する必要があります。

拡張機能を修正した後、ファイルを別の場所に移動します。

拡張機能を修正しておらず、ファイルを移動していません。

どんな助けでも大歓迎です。

Set FSO = CreateObject("Scripting.FileSystemObject") 
Set pdfFolder = FSO.GetFolder( "C:\Folder1\Subfolder\") 

For Each fil In pdfFolder.Files 
     ' check each file to be sure it fits the pattern 
     fname = fil.Name 
     suffix = LCase( Right( fname, 4 ) ) 
     prefix = Left( fname, 8 ) 
     ' so suffix has to be right, prefix has to have two slashes, and prefix has to be a date: 
     If UBound( Split(prefix,"/") ) = 2 AND IsDate(prefix) AND suffix = ".pdf" Then 
         newName = Mid( fname, 9 ) 
        ' Response.Write "Renaming '" & fname & "' to '" & newName & "'<br/>" & vbNewLine 
         fil.Move "E:\Folder2\Fixed\" & newName 
     End If 
Next 
4

2 に答える 2

1

このコードはあなたの問題を解決するはずです:

Set Fso = CreateObject("Scripting.FileSystemObject") 
Set PdfFolder = Fso.GetFolder("C:\Folder1\Subfolder\") 
For Each x In PdfFolder.Files 
    Fname = x.Name 
    If LCase(Right(Fname, 4)) <> ".pdf" Then
        Fso.MoveFile Fname, "E:\Folder2\Fixed\" & Fso.GetBaseName(Fname) & ".pdf"
    End If 
Next 

私が助けてくれたことを願っています。

于 2012-05-25T16:51:00.973 に答える
1

ファイル仕様を単なる別の文字列として扱うのではなく、FileSystemObjectの特殊なメソッドを使用する必要があります。

Option Explicit
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim aTests : aTests = Array(_
    "good.pdf" _
  , "pddext.pdd" _
  , "ucase.PDf" _
  , "noext" _
  , "more tests please.pdf" _
)
Dim sTest
For Each sTest In aTests
    WScript.Echo "  ", qq(sTest)
    WScript.Echo "=>", qq(goFS.GetBaseName(sTest) & ".pdf")
Next

Function qq(sText)
  qq = """" & sText & """"
End Function

出力:

cscript 02.vbs
   "good.pdf"
=> "good.pdf"
   "pddext.pdd"
=> "pddext.pdf"
   "ucase.PDf"
=> "ucase.pdf"
   "noext"
=> "noext.pdf"
   "more tests please.pdf"
=> "more tests please.pdf"
于 2012-05-25T17:02:02.960 に答える