選択されたファイルを圧縮する その2 2011-02-14 (Mon) 23:20

今回は選択されたファイルを、zip形式で圧縮する X-Finderスクリプト。
圧縮の形式が違うだけなので、詳細は「選択されたファイルを圧縮する」を参照のこと。

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateTrue = 0, TristateFalse = -1, TristateUseDefault = -2;

var i = 0;
var oSh = new ActiveXObject("WScript.Shell");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var cSel = WScript.Col(WScript.Env('Selected'));
var sBnam = oFs.GetBaseName(cSel.Item(0));
var sExt = '.zip';
var sName = sBnam + sExt, sNam2;
var sTemp = WScript.Env('Temp') + '\\' + oFs.GetTempName();
var sPgpath = '"D:\\Tools\\7za\\7za.exe"';
var sPara = ' a -tzip -mx=5 -r -y -scsWIN ';
var oTf = oFs.OpenTextFile(sTemp, ForWriting, true, TristateUseDefault);

oSh.CurrentDirectory = oFs.GetParentFolderName(cSel.Item(0));
while(true){
    if(oFs.FileExists(sName))
        sName = sBnam + ' (' + (++i).toString(10) + ')' + sExt;
    else
        break;
}
for(i = 0; i < cSel.Count; i++){
    oTf.WriteLine('"' + cSel.Item(i) + '"');
}
oTf.Close();
sNam2 = '"' + sName + '"';
oSh.Run(sPgpath + sPara + sNam2 + ' @' + sTemp, 7, true);
oFs.DeleteFile(sTemp);


なんだこれ。殆ど 7-zip圧縮と変わらんな。違いは赤字の部分だけだし、パラメタで渡すようにすべきだ。
X-Finder からスクリプト呼び出すときコマンドラインでパラメタも渡せるのかな???

Include:JScript ファイル圧縮.js '.zip' ' a -tzip -mx=5 -r -y -scsWIN '


こんな感じで…
なんか、いろいろ知らないこと多くてじれったし。
関連記事

選択されたファイルを圧縮する 2011-02-10 (Thu) 22:55

選択されたファイルをカレントフォルダ(選択したファイルの存在するフォルダ)に圧縮する X-Finderスクリプト。

以前に書いた Explzhの「書庫作成」を実行する - X-Finderスクリプト でも同じ事はできる。
このスクリプトでは、Explzhの「書庫作成」とは違い、圧縮の設定ダイアログで圧縮方法や圧縮率などの細かい指定を行わず、あらかじめ決められた方法で圧縮を行う。
普段よく使う圧縮形式(うちでは7-zip)は決まっているので、細かい指定をする手間を省いてしまおうという訳だ。

注意
1. 赤字の部分(sPgpath)は各々の環境に応じて7za.exeのパスを指定すること。
2. 赤字の部分(sPara)は圧縮オプションなので好みに応じて編集可能。(7-zipのマニュアルを参照して自己責任でどうぞ)
3. 圧縮ファイル名は選択したファイルのファイル名により自動的に決定する。決定したファイル名が既に存在する場合は末尾に連番を付加する。

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateTrue = 0, TristateFalse = -1, TristateUseDefault = -2;

var i = 0;
var oSh = new ActiveXObject("WScript.Shell");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var cSel = WScript.Col(WScript.Env('Selected'));
var sBnam = oFs.GetBaseName(cSel.Item(0));
var sExt = '.7z';
var sName = sBnam + sExt, sNam2;
var sTemp = WScript.Env('Temp') + '\\' + oFs.GetTempName();
var sPgpath = '"C:\\Program Files\\7za\\7za.exe"';
var sPara = ' a -t7z -ms=off -mx=7 -r -y -scsWIN ';

var oTf = oFs.OpenTextFile(sTemp, ForWriting, true, TristateUseDefault);

oSh.CurrentDirectory = oFs.GetParentFolderName(cSel.Item(0));
while(true){
    if(oFs.FileExists(sName))
        sName = sBnam + ' (' + (++i).toString(10) + ')' + sExt;
    else
        break;
}
for(i = 0; i < cSel.Count; i++){
    oTf.WriteLine('"' + cSel.Item(i) + '"');
}
oTf.Close();
sNam2 = '"' + sName + '"';
oSh.Run(sPgpath + sPara + sNam2 + ' @' + sTemp, 7, true);
oFs.DeleteFile(sTemp);


7za.exe では zip形式で圧縮することも出来、このスクリプトをちょちょいといじれば対応出来る。
後日また…

7-zipの詳細&ダウンロードはこちらから(7-Zip コマンドラインバージョンを使わせてもらってます。)
7-Zip

関連記事

最近使ったファイルの履歴を作成しない 2011-02-09 (Wed) 23:30

前回に引き続きOSの(再)インストール時に無効にするもののひとつ「最近使ったファイルの履歴作成」機能。
これは、[スタートメニュー]-[最近使ったファイル]に、アクセスしたファイルのショートカットを自動的に作成するという機能だが、あっても使わないのでざくっと無効化してしまう!

レジストリエディタで、

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer


を開き、

NoRecentDocsMenu(DWORD値)
NoRecentDocsHistory(DWORD値)


をそれぞれ「1」にする。(これらの項目がなければわざわざ作成してでも「1」にする)
元に戻すには、これらの値をそれぞれ「0」にすること。
尚、この変更を有効にするためには windowsを再起動する必要がある。

※レジストリは下手にいじるとOS自体に致命的なダメージを与える場合があるので充分に注意し、あくまで自己責任で行うこと。

関連記事

zip cab フォルダを無効にする 2011-02-07 (Mon) 23:57

windowsが標準で持っている、zipファイル及びcabファイルをエクスプローラ上でフォルダのように扱う 機能。
フリーのアーカイバを使ってるので、はっきり言って邪魔。OS再インストール時などには、必ず無効にするっ!
[スタート]-[ファイル名を指定して実行]から以下のコマンドを実行。

zipフォルダの無効

regsvr32 /u zipfldr.dll


cabフォルダの無効

regsvr32 /u cabview.dll



万一再度これらの機能が使いたくなったら、それぞれ /u を省いて上記のコマンドを実行のこと。
関連記事

拡張子小文字変換 - X-Finderスクリプト 2011-02-06 (Sun) 22:59

ファイルの拡張子を小文字に変換するスクリプト。

デジカメで撮ったデータの拡張子が大文字になっててなんか気持ち悪いので、PCに取り込む際に拡張子を小文字に統一することにした。
ファイル名を一括変更するツールも高機能で便利なものがたくさんあるようだが、X-Finderから実行するにはコマンドラインで使えないといけないし、探すの面倒だし、ってな訳でスクリプトでやることにした。
X-Finderの右クリックにスクリプト登録し、変換したいファイルを選択して、右クリック一発実行。んー便利。めでたしめでたし。

しかし右クリックにいろいろ登録しすぎてちょっとカオスになってきたなぁ。そのうち整理せねば。

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateTrue = 0, TristateFalse = -1, TristateUseDefault = -2;

var sExt;
var oShell = new ActiveXObject("Shell.Application");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var cSel = WScript.Col(WScript.Env('Selected'));
var oFolder = oShell.NameSpace(oFs.GetParentFolderName(cSel.Item(0)));

for(var i = 0; i < cSel.Count; i++){
    if((sExt = oFs.GetExtensionName(cSel.Item(i))) != sExt.toLowerCase()){
        oFolder.ParseName(oFs.GetFileName(cSel.Item(i))).Name =
                    oFs.GetBaseName(cSel.Item(i)) + '.' + sExt.toLowerCase();
    }
}

関連記事
注意事項
基本的にこのブログはブログ主の備忘録です。

ブログの内容にはブログ主の主観や時には正確でない情報が含まれていることもあります。書いてある内容がすべての環境にあてはまることを保証するものでもありません。
また過去の記事の情報はそれが参照された時点では既に陳腐化していることもあります。

その辺をご理解の上で当ブログ内に書いてあることを試す場合は自己責任でお願いします。

万一何らかの損害が生じても責任は持てませんのであしからず!

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
02 | 2011/02 | 03
- - 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 - - - - -
ブログ内検索
カラーコードチェッカ
カラーコードの確認
入力例) #ffffff | blue
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文: