执行 VBS 文件的 Azure 批处理任务问题

Azure Batch Task problem executing a VBS file

我正在尝试将 VBS 文件作为 Azure 批处理任务启动,但我不断收到无法找到脚本文件的错误。

这是一个有效的命令:

string appPath = String.Format("%AZ_BATCH_APP_PACKAGE_{0}#{1}%", appPackageId, appPackageVersion);
string taskCommandLine = String.Format("cmd /c {0}\ffmpeg-3.4-win64-static\bin\ffmpeg.exe -i {1} -vcodec libx264 -crf 28 -c:a aac -b:a 128k {2} & del {3} & rename {4} {5}", appPath, inputMediaFile, outputMediaFile, inputMediaFile, outputMediaFile, inputMediaFile);

这个工作正常,但在对输入文件触发 ffmpeg 之前,我想先用 ffprobe 做一些检查,然后用 .bat 做这件事很糟糕,所以我想在 VBScript 中做。

string appPath = String.Format("%AZ_BATCH_APP_PACKAGE_{0}#{1}%", appPackageId, appPackageVersion);
string taskCommandLine = String.Format("cmd /c cscript {0}\ffmpeg-3.4-win64-static\bin\scan_run1.vbs {1} {2}", appPath, inputMediaFile, outputMediaFile);

这导致:

Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved.

Input Error: Can not find script file "D:\batch\tasks\applications\ffmpeg3.42019-02-01-19-50\ffmpeg-3.4-win64-static\bin\scan_run1.vbs"

我很确定 vbs 在那里,因为在完全相同的位置调用 ffmpeg.exe 工作正常。

当我将 ZIP 文件作为包上传时,Azure 门户是否会从 ZIP 文件中删除 VBS?那里发生了什么事?

谢谢。


原来 Azure 门户在我替换应用程序包时没有更新它。所以它有 "scan_run.vbs" 但没有 "scan_run1.vbs" 即使我这边的 ZIP 文件有它。

这将有助于更好地理解,基本上简短的回答是:

此处参考文献:https://docs.microsoft.com/en-us/azure/batch/batch-application-packages

Similar to a pool, you specify application package references for a task. When a task is scheduled to run on a node, the package is downloaded and extracted just before the task's command line is executed. If a specified package and version is already installed on the node, the package is not downloaded and the existing package is used.

详情

就像我在评论中提到的,如果你有不同版本的应用程序包,建议使用它。

很高兴您正在探索这些错误,因为这将有助于围绕您的应用程序更好地设计此概念。

建议

此处详细介绍了版本的工作原理:

额外内容:

常见陷阱

  • 如果用户应用程序通过 API 或手动上传应用程序包,请确保包已正确上传,Programmaticvally 通常 non async行为会导致问题,因此在 Batch 创建池并继续之前始终等待上传完成。