ZIP圧縮の待ち合わせ方法
また別の待ち合わせ方法です。ZIPファイルの更新日時の変化を捕らえます。
@if(0)==(0) ECHO OFF
CScript.exe //NoLogo //E:JScript "%~f0" %*
GOTO :EOF
@end
var Usage="Usage: MakeZIP.CMD ZIPfile files...";
if(WScript.Arguments.Count()<2){
WScript.Echo(Usage);
WScript.Quit();
}
var ZIPfile=WScript.Arguments.Item(0);
var fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.GetExtensionName(ZIPfile).toUpperCase()!="ZIP"){
WScript.Echo("Invalid Extension Name -",ZIPfile);
WScript.Quit();
}
if(!fso.FileExists(ZIPfile)){
var File=fso.CreateTextFile(ZIPfile,false);
File.Write("PK" + String.fromCharCode(5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
File.Close();
}
var wShell=new ActiveXObject("WScript.Shell");
var vbYesNoCancel=3;
var vbQuestion=32;
var vbYes=6;
var vbNo=7;
var vbCancel=2;
var Shell=new ActiveXObject("Shell.Application");
var File=fso.GetFile(ZIPfile);
var zFolder=Shell.NameSpace(File.Path);
F1:for(var k=1;k<WScript.Arguments.Count();k++){
var Path=WScript.Arguments.Item(k);
var FileName=fso.GetFileName(Path);
var sFolderItem=Shell.NameSpace(fso.GetParentFolderName(fso.GetAbsolutePathName(Path))).ParseName(FileName);
if(!sFolderItem){
WScript.Echo(Path,"- Not Found.");
break;
}
W1:while(true){
var zFolderItem=zFolder.ParseName(FileName);
if(!zFolderItem){
var ModifyDate=new Date(File.DateLastModified);
zFolder.CopyHere(sFolderItem);
while(ModifyDate.valueOf()==new Date(File.DateLastModified).valueOf()) WScript.Sleep(100);
break;
}else{
var Ans=wShell.PopUp("このフォルダには既に次のファイルが存在します:\n\n"+
'"' + FileName + '"\n\n既存のファイルと置き換えますか?',
0,"ファイル置換の確認",vbYesNoCancel+vbQuestion);
switch(Ans){
case vbYes:
zFolderItem.InvokeVerb("delete");
break;
case vbNo:
break W1;
case vbCancel:
break F1;
}
}
}
}
WScript.Quit();
« Command.com用バッチファイルをJSファイルにラップする。 | トップページ | VBAからAdobe ReaderでPDFファイルを印刷する。(その3) »