我正试图将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脚本主机5.8版版权所有(C)Microsoft公司保留所有权利。
输入错误:找不到脚本文件"D:\batch\tasks\applications\ffmpeg3.42019-02-01-19-50\ffmpeg3.4-win64-static\bin\scan_run1.vbs">
我很确定vbs在那里,因为在完全相同的位置调用ffmpeg.exe可以很好地工作。
当我将VBS作为包上传时,Azure门户是否将其从ZIP文件中剥离?那里发生了什么事?
谢谢。
当我更换应用程序包时,Azure Portal没有更新它。所以它有"scan_run.vbs",但没有"scan_run 1.vbs",即使我端的ZIP文件有它。
这将有助于更好地理解,简单的答案是:
此处的参考文件:https://learn.microsoft.com/en-us/azure/batch/batch-application-packages
类似于池,您可以为任务当任务计划在节点上运行时,包在任务的命令行之前下载并提取已执行如果指定的软件包和版本已安装在节点,程序包未下载,而现有程序包使用。
详细信息
就像我在评论中提到的,如果你有不同版本的应用程序包,建议使用。
您正在探索这些错误,这很好,因为这将有助于围绕应用程序更好地设计这个概念。
推荐
-
例如:
If you have all tasks sharing same application package, I would recommend using Pool Level app pkgs
https://learn.microsoft.com/en-us/azure/batch/batch-application-packages#install-池应用程序包 -
If you have task level and you are changing the content of existing app pkgs
然后使用具有版本的应用程序pks,并根据应用程序pkg的不同内容使版本不同。
这里详细介绍了版本的工作原理:
- https://learn.microsoft.com/en-us/azure/batch/batch-application-packages#execute-已安装的应用程序
附加:
-
关于有多少环境变量和类型的详细信息:https://learn.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables
-
https://learn.microsoft.com/en-us/azure/batch/batch-application-packages#benefits-应用程序包的
常见Gotchas
- 如果用户应用程序正在通过API动态或手动上传应用程序pkgs,请确保正确上传了程序包,程序性通常
non async
行为会导致问题,因此请始终等待上传完成,然后Batch创建池并继续