XFiler.RegisterCommand("test_api", "APIテスト（選択項目の取得など）", function () {
    var activePath = XFiler.GetActivePath();
    var passivePath = XFiler.GetPassivePath();

    // 選択された項目の取得（複数マークがあれば複数、なければカーソル位置1つ）
    var selected = XFiler.GetSelectedItems();

    XFiler.Log("アクティブパス: " + activePath);
    XFiler.Log("反対側パス: " + passivePath);
    XFiler.Log("選択された項目: " + selected.length + "件");
    XFiler.Log(selected.join(", "));

    if (selected.length > 0) {
        for (var i = 0; i < selected.length; i++) {
            var srcName = selected[i];
            
            // ディレクトリだった場合はスキップ（今回はファイルのみコピー）
            if (XFiler.IsDirectory(srcName)) {
                continue;
            }
            
            // ファイルごとにコピーするかどうかを確認
            if (XFiler.Confirm(srcName + " をバックアップディレクトリへコピーしますか？", "マクロテスト")) {
                
                // コピー後のファイル名をプロンプトで確認/修正
                var destName = XFiler.Prompt("コピー先ファイル名:", "リネーム入力", srcName);
                
                if (destName) {
                    // パッシブ側にバックアップ用ディレクトリを準備
                    XFiler.CreateDirectory("backup", true);
                    var targetPath = path.join("backup", destName);
                    
                    if (XFiler.CopyFile(srcName, targetPath)) {
                        XFiler.Log("成功！: " + targetPath);
                        // コピーに成功したら、コピー元のファイルのマークを解除
                        XFiler.MarkItem(srcName, false);
                    } else {
                        XFiler.Log("失敗: " + srcName);
                    }
                }
            }
        }
        // 表示を最後にまとめて更新
        XFiler.Refresh();
    } else {
        XFiler.ShowMessage("選択されている項目がありません。", "エラー");
    }
});
