我有一个批处理文件,用于管理各种程序的翻译。 现在我想要一个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);
答案 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
。代字号删除"任何封闭的引号。"
参数必须用引号括起来" (如果它们包含空格等分隔符,则它们必须是双引号。