LoginSignup
2
1

More than 5 years have passed since last update.

起動オプション付きショートカットを作成するバッチファイル

Last updated at Posted at 2018-07-04

初投稿

 よろしくお願いします。こんな感じでよいのだろうか・・・

背景

 新しいマシンの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
 なのでコードの内容はあまりわかってないです・・・

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1