人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windowsでフォルダー内にある複数のファイルを”最終更新日+元ファイル名”にリネームし、個別にZip圧縮するスクリプトを組みたいと考えています。知恵をお貸しください。

●質問者: deep37
●カテゴリ:コンピュータ
✍キーワード:Windows zip スクリプト ファイル フォルダー
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● akibare
●40ポイント

http://www.vector.co.jp/soft/dl/winnt/util/se355605.html

ZIP.VBS(WindowsNT/2000/XP / ユーティリティ)

c:¥sourcefolderにもとのファイルがあり

c:¥sourcefolder¥zippedに出力するとします。


すると下記のコードをvbsファイルコピーして(「”」は半角に直して)実行すると・・・・あら不思議出来てしまいました。。


dim fso, wShell, sourceFolderPath, targetFolderPath, Shell, ie, file, d

dim sourceFolder, TargetFolder, sourceFile, zipfile, zip, dFolder

dim ZIPdata:ZIPdata=”PK” & Chr(5) & Chr(6) & String(18,0)


sourceFolderPath=”C:¥SourceFolder”

targetFolderPath=”C:¥SourceFolder¥zipped”


Set fso=CreateObject(”Scripting.FileSystemObject”)

Set wShell=CreateObject(”WScript.Shell”)


CreateObject(”WScript.Shell”).Run ”explorer.exe”,0,True

WScript.Sleep 100

Set Shell=CreateObject(”Shell.Application”)

For Each ie In Shell.Windows

If Not ie.Busy and ie.ReadyState=4 and InStr(TypeName(ie.Document),”IShellFolderViewDual”)=1 Then

exit for

end if

next

Set Shell=ie.Document.Application


set sourceFolder = fso.GetFolder(sourceFolderPath)

set targetFolder = fso.GetFolder(targetFolderPath)


for each file in sourceFolder.Files

d = file.DateLastModified

zipfile=targetFolderPath & ”¥” & Year(d) & ”-” & Month(d) & ”-” & Day(d) & ” ” & file.Name & ”.zip”

fso.CreateTextFile(zipfile).write ZIPdata

Set dFolder=Shell.NameSpace(zipfile)

Set Folder=Shell.NameSpace(file.ParentFolder.Path)

Set FolderItem=Folder.ParseName(file.Name)

dFolder.CopyHere FolderItem

next


フリーウェアのコードを一部拝借するのは著作権違反ですかねぇ。。もちろんWindowsのZIP機能を使わなくてもコマンドラインで動くZIPユーティリティを組み合わせても十分できるのですけど、VBSだけでできるというのはエレガントですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ