我让ChatGPT帮我搓一个脚本,就是用不了。

我让ChatGPT帮我搓一个脚本,就是用不了。使用 ffmpeg.exe 水平合并选中的两张图片。它写得有板有眼的,就是用不了。看看它写得有什么问题。

function OnClick(clickData) {
    var cmd = clickData.func.command;
    cmd.deselect = false; // Prevent automatic deselection

    // 获取选中的文件
    var selectedFiles = clickData.func.sourcetab.selected_files;
    if (selectedFiles.count < 2) {
        DOpus.Output("请选中至少两张图片进行合并!");
        return;
    }

    // 构建 ffmpeg 命令
    var ffmpegPath = 'C:\\Path\\To\\ffmpeg.exe'; // 请修改为 ffmpeg.exe 的实际路径
    var inputFiles = '';
    for (var i = 0; i < selectedFiles.count; i++) {
        inputFiles += '-i "' + selectedFiles(i).realpath + '" ';
    }

    // 构建滤镜命令
    var filter = 'hstack=inputs=' + selectedFiles.count;

    // 生成合并命令
    var outputFile = selectedFiles(0).path + '\\output.jpg';
    var cmdLine = ffmpegPath + ' ' + inputFiles + '-filter_complex "' + filter + '" "' + outputFile + '"';

    // 运行命令
    var shell = new ActiveXObject("WScript.Shell");
    shell.Run(cmdLine, 0, true);

    DOpus.Output("合并完成!输出文件: " + outputFile);
}

用gpt写了一个,用magick横向拼接的bat

@echo off
setlocal

rem 检查是否有输入文件
if "%~1"=="" (
    echo -请将图片拖放到此批处理文件上-
    goto end
)

rem 获取第一个输入文件的目录
set "first_input=%~1"
for %%F in ("%first_input%") do set "output_dir=%%~dpF"

rem 设置输出文件名
set "output=%output_dir%merged_image.jpg"

rem 获取当前脚本所在目录
set "current_dir=%~dp0"
set "magick_path=%current_dir%magick.exe"

rem 初始化命令
set "cmd=%magick_path% "

rem 遍历所有拖放的文件
:loop
if "%~1"=="" goto endloop
set "cmd=%cmd% %~1"
shift
goto loop

:endloop
rem 添加水平拼接参数
set "cmd=%cmd% +append "%output%""

rem 执行合并命令
echo Run %cmd%
%cmd%

:check
rem 检查输出文件是否存在
if not exist "%output%" (
    echo 错误:输出文件未生成,请检查输入文件和 ImageMagick 配置。
    exit /b 1
) else (
    echo 合并完成,输出文件为 %output%
)

:end
endlocal
pause

1 楼的脚本是 JS,然后走 ActiveXObject 调用 exe。。。就挺复古的。。

准确点儿好像是叫:JScript?