• ベストアンサー

ショートカットからオリジナルを引っ張り出す圧縮ソフトを探しています

ショートカットのアイコンを圧縮ソフトに送ったときに ショートカットのおおもとのオリジナルのファイルを圧縮してくれる ソフトはありますか。 それができれば、定期的にバックアップを取りたいファイルのショートカットを 一箇所に集めておいて、まとめて圧縮できるので便利かと思いました。 圧縮形式は zip, lha など一般的なものでかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんばんは。 圧縮機能追加版です。 TransLha.ocxが必要なので、 それを参考URLからダウンロードしてシステムフォルダにつっこみ、 DOSプロンプトで「regsvr32.exe TransLha.ocx」を実行して ライブラリに登録すると実行できます。 デスクトップにCAB形式で圧縮されたバックアップファイルができます。 //-------------------------ここから var FSO = WScript.CreateObject("Scripting.FileSystemObject"); var WshShell = WScript.CreateObject("WScript.Shell"); var otl = WScript.CreateObject("TransLhaO.TransLha"); var DesktopPath = WshShell.SpecialFolders("Desktop"); var d = new Date(); var StringDateNow = d.getYear() + "年" + d.getMonth() + "月" + d.getDay() + "日" + d.getHours() + "時" + d.getMinutes() + "分" + d.getSeconds() + "秒"; otl.ArcMode = 2; otl.pBaseFolder = DesktopPath; otl.pFilesClear(); otl.pArcFileName = DesktopPath + "\\バックアップ " + StringDateNow + ".cab"; function myBackup(LinkName){ RealName = WshShell.CreateShortcut(LinkName).TargetPath; if(FSO.FolderExists(RealName)){ myAddSubFoldersToZip(RealName); return RealName; }else if(FSO.FileExists(RealName)){ otl.pAddFile(RealName); return RealName ; }else{ if(WshShell.Popup("次のファイルがリンク切れです。\n\nリンク元-> " + LinkName + "\nリンク先-> " + RealName + "\n\nリンク元を削除してもよい?", 0, "JScript for Backup by Komugi100g", 4 + 48) == 6) FSO.DeleteFile(LinkName); } return null; } function myAddSubFoldersToZip(fName){ var TargetFolder = FSO.GetFolder(fName); var TargetFolderFiles = new Enumerator(TargetFolder.files); var TargetFolderSubFolders = new Enumerator(TargetFolder.SubFolders); for(; ! TargetFolderFiles.atEnd(); TargetFolderFiles.moveNext()) otl.pAddFile(TargetFolderFiles.item()); for(; ! TargetFolderSubFolders.atEnd(); TargetFolderSubFolders.moveNext()){ otl.pAddFile(TargetFolderFiles.item()); myAddSubFoldersToZip(TargetFolderSubFolders.item()); } } var ShellLink; var ShellReal; var temp; var CurrentFolder = FSO.GetFolder(".\\"); var CurrentFolderFiles = new Enumerator(CurrentFolder.files); for(; ! CurrentFolderFiles.atEnd(); CurrentFolderFiles.moveNext()){ temp = new String(CurrentFolderFiles.item()); if(temp.match(/[^\n]*\.LNK/i)) myBackup(temp); } otl.Pack(); WScript.Echo(otl.pArcFileName + "にファイルを作成しました。"); //-------------------------ここまで

参考URL:
http://homepage3.nifty.com/addr/soft/translha/
mqm
質問者

お礼

出来合いの製品を紹介いただくかわりに、 オリジナルのコードを書いていただけるとは大変感激いたしました。

その他の回答 (1)

回答No.1

おはようございます。 適当にプログラムを書いてみたのでよければ使ってみてください。 案がおもしろかったので試しに作ってみました。 インストール?の仕方は次のとおり。 1.ノートパッドを開く。 2.まっしろなノートパッドに、下のごちゃごちゃした  スクリプト(ここから、から、ここまで)をコピーする。 3.「ファイル」→「名前をつけて保存」で、  ファイルの種類を「全てのファイル」にする。 4.ファイル名を「***.js」にして保存。  ***の部分は何でもよい。 5.保存したフォルダを開いてみて、巻物みたいな柄の  ファイルができてたら完成。 その巻物と同じフォルダにショートカットを置いておきましょう。 その巻物をダブルクリックするなどして実行すれば、 デスクトップに「バックアップ ~年~月~日…」というフォルダを作り、 ショートカットじゃなくてショートカットの実体を そのフォルダにコピーします。 あとは自分で圧縮してください。 圧縮の仕方がわかりませんでした…( ´_ゝ`) //-------------------------ここから var FSO = WScript.CreateObject("Scripting.FileSystemObject"); var WshShell = WScript.CreateObject("WScript.Shell"); var DesktopPath = WshShell.SpecialFolders("Desktop"); var d = new Date(); var StringDateNow = d.getYear() + "年" + d.getMonth() + "月" + d.getDay() + "日" + d.getHours() + "時" + d.getMinutes() + "分" + d.getSeconds() + "秒"; var BackupFolderName = DesktopPath + "\\バックアップ " + StringDateNow; function myBackup(LinkName){ RealName = WshShell.CreateShortcut(LinkName).TargetPath; FSO.CreateFolder(BackupFolderName); if(FSO.FolderExists(RealName)){ FSO.CopyFolder(RealName,BackupFolderName + "\\"); return RealName; }else if(FSO.FileExists(RealName)){ FSO.CopyFile(RealName,BackupFolderName + "\\"); return RealName; }else{ if(WshShell.Popup("次のファイルがリンク切れです。\n\nリンク元-> " + LinkName + "\nリンク先-> " + RealName + "\n\nリンク元を削除してもよい?", 0,"JScript for Backup by Komugi100g", 4 + 48) == 6) FSO.DeleteFile(LinkName); } return null; } var ShellLink; var ShellReal; var temp, temp2; var EncryptFiles; EncryptFiles = ""; var CurrentFolder = FSO.GetFolder(".\\"); var CurrentFolderFiles = new Enumerator(CurrentFolder.files); for(; ! CurrentFolderFiles.atEnd(); CurrentFolderFiles.moveNext()){ temp2 = null; temp = new String(CurrentFolderFiles.item()); if(temp.match(/[^\n]*\.LNK/i)) temp2 = myBackup(temp); if(temp2 != null) EncryptFiles += " \"" + temp2 + "\""; } // 圧縮したい場合はここにスクリプトを記述する。 // 変数EncryptFilesにファイル名の羅列が格納されている。 WScript.Echo("終了しました。"); //-------------------------ここまで もしWindowsXPじゃない場合、WindowsScriptingHost というものがインストールされてなかったら動かないので 動かなかったら参考URLを頼りにWSHを入れてみてください。 いや、使わないんだったらそれはそれでOKです。 <<みやばっく【簡単バックアップ】>>  http://www.vector.co.jp/vpack/browse/pickup/pw4/pw004653.html のようにファイルを指定して簡単にバックアップできる ソフトもありますし。 ではまた。

参考URL:
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/install.htm

関連するQ&A

専門家に質問してみよう