初投稿
よろしくお願いします。こんな感じでよいのだろうか・・・
背景
新しいマシンのteratermのインストール先変えちゃった!
ショートカット作り直さないと、、、
仕様概要
テキストファイル等にあるリストでショートカットを一括作成
使い方:
1. shortcut.batをつくる
2. テキストエディタで開いて下のソースコピペする
3. コマンドプロンプト起動
4. cd などでshortcut.batの場所へ移動
5. shortcut.bat "test.lnk" "C:\Program Files (x86)\teraterm\ttermpro.exe" "192.168.1.101 /auth=passwd /user=sshuser /passwd=password" "C:\Program Files (x86)\teraterm"
(バッチファイル名、ショートカット名、実行ファイルの場所、起動オプション、作業フォルダー)(※起動オプションとか不要な個所は "" で空としてください)
みたいな感じで実行
ソースコード
shortcut.bat
@if(0)==(0) echo off
cscript.exe //nologo //E:JScript "%~f0" %*
goto :EOF
@end
// メイン処理
function main() {
var shortcut = null;
try {
// ショートカットを作成する
shortcut = new ShortcutCreater();
shortcut.create();
// 作成したショートカットをコンソールに出力する
Console.println("ショートカットを作成しました");
Console.println(shortcut);
} catch (e) {
// 例外原因をコンソールに出力する
Console.println("[error occured]: " + e.description);
Console.println("usage: shortcut.bat [filepath] [linkpath]");
// 異常終了でコマンドを返す
Console.back(e.number);
} finally {
// WSHオブジェクトを片付ける
if (shortcut !== null)
shortcut.cleanup();
}
// 正常終了でコマンドを返す
Console.back(0);
}
// コンソール汎用クラス
var Console = ((function() {
var constructor = function() {}
constructor.println = echoConsole;
constructor.back = exitScript;
return constructor;
})())
// ショートカットを作るクラス
var ShortcutCreater = function() {
var args = WScript.Arguments;
validate(args);
this.wshObj = openWsh();
this.file = args(0);
this.link = args(1);
this.opt = args(2);
this.wd = args(3);
this.create = createShortcut;
this.cleanup = closeWsh;
this.toString = createrToString;
}
// ----- 以降関数群 -------
function validate(args) {
if (args == null) {
throw new Error(1, "args=null or undefined");
}
if (args.length !== 4) {
var str = "args = ";
for (i=0; i < args.length; i++)
str += "[" + i + "]:" + args(i) + " ";
throw new Error(2, str);
}
}
function createShortcut() {
var lnkFile = this.wshObj.CreateShortcut(this.file);
lnkFile.TargetPath = this.link;
lnkFile.Arguments = this.opt;
lnkFile.WorkingDirectory = this.wd;
lnkFile.Save();
}
function createrToString() {
return "file=\"" + this.file + "\", linkTo=\"" + this.link + "\"";
}
function openWsh() {
return WScript.CreateObject("WScript.Shell");
}
function closeWsh() {
this.wshObj = null;
}
function echoConsole(msg) {
WScript.echo(msg);
}
function exitScript(errNum) {
WScript.Quit(errNum);
}
// メイン処理呼び出し
main();
参考文献
y-takano様 ショートカットを作成するバッチファイル(ファイル単体, JScript混在)
こちらのソースをもとにちょっとアレンジしただけです、とても助かりました。m(_ _)m
なのでコードの内容はあまりわかってないです・・・