1

この非常に複雑な要件があります。

ftpサーバーからローカルディレクトリのフォルダにダウンロードされたzipファイルがたくさんあります。

次に、以下のコードを使用してファイルを解凍します。

Set objZip = CreateObject("XStandard.Zip")

Set FSO = CreateObject("Scripting.FileSystemObject")
Set fldr = FSO.GetFolder("C:\MUSK\FTP\MainFolder\")

For Each fil In fldr.Files
If LCase( Right( fil.Name, 4 ) ) = ".zip" Then
zipFilePath = fil.Path
objZip.UnPack zipFilePath, ("C:\MUSK\FTP\Current\")
End If
Next

ここまでは順調ですね。

ここで問題が発生します。

これらのダウンロードされたファイルには、次の命名規則があります。

filename_month-day-year.zip

例:今日が2012年5月16日であるとすると、ファイル名は次のようになります。

myFile_5-16-2012.zip

ダウンロードしたzipファイルを取得して、正しいフォルダーに配置する必要があります。

たとえば、月と年に応じて名前が付けられたフォルダがあります。

例:JAN2012、FEB2012などがあります

したがって、myFIle_5-16-2012.zipを例にとると、myFile_5-16-2012.zipはMAY2012用です。

上記のスクリプトを使用してmyFile_5-16-2012.zipを取得し、適切なフォルダーに配置します。この例では、適切なフォルダは2012年5月で、解凍します。

基本的に、MonthYearフォルダーはこれを置き換えます。

objZip.UnPack zipFilePath、( "C:\ MUSK \ FTP \ Current \")

つまり、Currentフォルダーの代わりに、2012年5月またはMonthYearの任意の組み合わせになります。

これは可能ですか?

明確にさせていただきたいと思います。誰かを混乱させたらごめんなさい。

4

1 に答える 1

0

これは非常に簡単です。私は...するだろう:

  1. ファイル名を適切なMMMYYYY形式に変換する関数を作成します
  2. FileSystemObjectを使用して、手順1で作成したフォルダー名が存在するかどうかを確認し、必要に応じて作成します
  3. ディレクトリ全体をXStandard.Zipオブジェクトに渡します

ここでFileSystemObjectのサポートされているメソッドを確認してください:http://msdn.microsoft.com/en-us/library/z9ty6h50(v = vs.85) .aspx

少なくとも、が必要.FolderExistsになります。.CreateFolder


私が作成した簡単なVBScriptは、おそらくエラーチェックなどを使用する可能性があります。楽しみ

' parse date, assumes file name is in foo_M-D-YYYY.ext format
Function parseDate(s)
    dim dt
    dt = CDate(split(split(s, "_")(1), ".")(0))
    parseDate = Monthname(Month(dt)) & Year(dt)
End Function
于 2012-05-17T02:10:33.430 に答える