使用多个参数执行批处理文件的正确方法是什么?

时间:2015-03-16 14:55:38

标签: delphi batch-file

我有一个批处理文件,用于管理各种程序的翻译。 现在我想要一个delphi应用程序来调用这个批处理文件并传递它进一步处理所需的参数。不幸的是,参数包含导致分裂的空格。有没有办法保持所有参数按预期方式捆绑? 这就是我的批处理文件的外观:

ECHO Scan for new ressources
%MLDIR%\Ml7Build.exe s %1%

ECHO Import glossary for new translation
%MLDIR%\MlBuild.exe i %2%

ECHO Create translated application
%MLDIR%\Ml7Build.exe b %3%

我尝试使用ShellApi的ShellExecute-Command,因为我在SO上发现了几个类似的问题,但没有一个可以帮助我解决我的问题。我的delphi代码如下所示:

 param1 := ExtractFileName(hMLProj);
 param2 := '-f: '+MLWorkDir+'Prev_'+ExtractFileName(hMLProj)+' -settings:Auftrag_Test.importsettings-method:2 -overwri:3 -error:2 '+ExtractFileName(hMLProj)+' ';
 param3 := ExtractFileName(hMLProj);
 ShellExecute(0,'open',PCHAR(MLWorkDir+'__AutomatedTranslationFUBAR.bat'),PChar(param1 +param2 +param3),nil,SW_SHOWDEFAULT);

1 个答案:

答案 0 :(得分:1)

ECHO Scan for new resources
%MLDIR%\Ml7Build.exe s %~1

ECHO Import glossary for new translation
%MLDIR%\MlBuild.exe i %~2
REM is 7 ^ omitted here?

ECHO Create translated application
%MLDIR%\Ml7Build.exe b %~3

请注意,%n 不是 %n%(n = 1..9)是指提供给批次的参数n。代字号删除"任何封闭的引号。"

参数必须用引号括起来" (如果它们包含空格等分隔符,则它们必须是双引号。