我正在尝试同时启动特定数量的同一批处理文件,但在传递参数时遇到了麻烦。
这是我使用的命令:
START "Split lossless enc %%G" "%wrkdir%_menc.bat" "%wrkdir%%avs%_%%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc%" "%mencx%"
%%G 是一个数字(在我的测试中从 1 到 4)
%wrkdir% 是当前工作目录(所以基本上是 %~dp0)
%avs% 和 %outf% 都是没有扩展名的文件名
%menc% 是一个带文件名的完整路径并且扩展名
%mencx% 是带有扩展名的文件名
其中任何一个都可能包含空格,但它们在我所做的测试中没有,因此删除参数的周围引号现在可以完美地工作。
在我完成所有搜索之后,一切都告诉我只需引用参数就可以了,但我不断收到以下错误:The filename, directory name, or volume label syntax is incorrect.
我尝试不使用启动的 bat 文件中的参数来确保不是我在那里使用它的方式导致了问题(尽管我非常怀疑它),但即使它只包含它也不起作用ECHO it works
编辑:我忘了说 START 在从 1 到 4 的 FOR 循环中,并且我使用 setlocal enableDelayedExpansion 但我使用的所有变量都设置在它之前(显然属于 FOR 的 %%G 除外)并且在循环之外
Edit2:为了更容易,我已经将批处理文件剥离到最低限度(我对其进行了测试以确保我得到相同的错误)所以我可以给你整个事情:
@ECHO off
SET wrkdir=%~dp0
SET avs=encode-01
SET menc=D:\_1enc_\_Tools\Mencoder\mencoder_r32198.exe
SET outf=test_mt
SET inst=4
SET mencx=%menc%
:FindMencx
IF NOT "%mencx:*\=%"=="%mencx%" (
SET "mencx=%mencx:*\=%"
GOTO FindMencx
)
FOR /L %%G IN (1,1,%inst%) DO (
START "Split lossless enc %%G" "%wrkdir%_menc.bat" "%wrkdir%%avs%_%%G.avs" "%wrkdir%%outf%_%%G.avi" "%menc%" "%mencx%"
)