はじめに
社内で外部に資料をメール送信する際には、 必ず以下のようなルールがあります。
( ここではこのルール自体の是非については触れません!! )
- ファイルをzip圧縮する
- zipファイルを暗号化する
- zipファイルはお客様が Windows PCを利用しているため、 Windows 上の一般的なツールで展開できるようにする
毎回手作業でやっていたので、 Groovyスクリプト化してみました。
以下がスクリプトの一部。
ここでは、 Zipユーティリティークラス というライブラリを利用させていただきました。 これは便利!ありがとう!
機能
- 利用環境 は Windows を想定しています。
- 少し変更すればLinuxやmacOS上でももちろん動作します。
- 圧縮対象となるディレクトリ は “デスクトップ” 上の “src/” ディレクトリに配置します。
- 圧縮済みファイル は “デスクトップ” 上に “encrypt-xxxx.zip” というファイル名で作成されます。
- パスワード は 実行日時(YYYYMMDD) となります。
zipTheAttachedFiles.groovy
- Grab 機能を使って、実行時にZipユーティリティライブラリを自動的にダウンロードしてきます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| @Grapes(
@Grab(group='com.astamuse', module='hishidama-hmzip', version='1.6')
)
import jp.hishidama.zip.ZipCloak
import java.io.File
import java.util.*
import java.text.*
// LinuxやmacOSでは、こちらのデスクトップ該当パスを適切に変更すれば動作します
def desktop = System.getProperty("user.home") + "/デスクトップ"
def srcdir = new File("${desktop}/src")
def distdir = desktop
if (!srcdir.exists()) {
srcdir.mkdir()
}
print "${srcdir.name}フォルダにファイルを入れてください。(準備ができたらEnterを押してください)"
System.in.read()
def dateStr = new SimpleDateFormat("yyyyMMdd").format(new GregorianCalendar().time)
def password = "${dateStr}"
def zipfile = new File("${distdir}/${srcdir.name}.zip")
ant = new AntBuilder()
ant.delete(
file:"${distdir}/${srcdir.name}.zip"
)
ant.zip(
destfile:"${zipfile.path}"
,basedir:"${srcdir}"
,update:"true"
){
}
def encZipfile = new File("""${desktop}/encrypt-${zipfile.name}""")
ant.delete(
file:"${encZipfile.path}"
)
ZipCloak zip = new ZipCloak(zipfile)
zip.encrypt(encZipfile, password.getBytes("MS932"))
ant.delete(
file:"${distdir}/${srcdir.name}.zip"
)
println "※※処理完了!※※"
|
実行例
1
| groovy zipTheAttachedFiles.groovy
|