diff --git a/src/main/ffmpeg.ts b/src/main/ffmpeg.ts index f05fd736..1dcc2cc5 100644 --- a/src/main/ffmpeg.ts +++ b/src/main/ffmpeg.ts @@ -24,8 +24,16 @@ export function setCustomFfPath(path: string | undefined) { customFfPath = path; } +function escapeCliArg(arg: string) { + if (isWindows) { + // https://github.com/mifi/lossless-cut/issues/2151 + return /[\s"&<>^|]/.test(arg) ? `"${arg.replaceAll('"', '""')}"` : arg; + } + return /[^\w-]/.test(arg) ? `'${arg.replaceAll("'", '\'"\'"\'')}'` : arg; +} + export function getFfCommandLine(cmd: string, args: readonly string[]) { - return `${cmd} ${args.map((arg) => (/[^\w-]/.test(arg) ? `'${arg}'` : arg)).join(' ')}`; + return `${cmd} ${args.map((arg) => escapeCliArg(arg)).join(' ')}`; } function getFfPath(cmd: string) {