我觉得这必须如此简单,不知怎的,我只是遗漏了一些东西。我有3个命令,我必须连续执行。如何将这些全部放入一个批处理文件中?
以下是命令:
cl /c /Zl /I"c:\EFI_Toolkit_2.0\include\efi" /I"c:\EFI_Toolkit_2.0\include\efi\em64t" c:\sandbox\efi_main.c
link /entry:main /dll /IGNORE:4086 efi_main.obj
fwimage.exe app efi_main.dll efi_main.efi
我尝试在每行的前面添加'start',虽然我看到每个命令echo'd只有第一个执行(即我只获得efi_main.obj但不是.dll或.efi)。
另外这些需要在visual studio shell中执行,只要我从shell中运行我的批处理文件,我认为这就足够了吗?
答案 0 :(得分:5)
如果你的意思是他们一个接一个地执行,并重复,尝试这样的事情:
:begin
cl /c /Zl /I"c:\EFI_Toolkit_2.0\include\efi" /I"c:\EFI_Toolkit_2.0\include\efi\em64t" c:\sandbox\efi_main.c
link /entry:main /dll /IGNORE:4086 efi_main.obj
fwimage.exe app efi_main.dll efi_main.efi
goto begin
如果您指的是同时运行,请在每个命令前加上start
。
start cl /c /Zl /I"c:\EFI_Toolkit_2.0\include\efi" /I"c:\EFI_Toolkit_2.0\include\efi\em64t" c:\sandbox\efi_main.c
start link /entry:main /dll /IGNORE:4086 efi_main.obj
start fwimage.exe app efi_main.dll efi_main.efi
但看起来您正在尝试运行编译器。所以很有可能,你需要结合这两种方法并等待第一种方法完成运行,然后再转到下一个命令或再次重复。为此,您应该将/ wait参数添加到start
命令。
:begin
start /wait cl /c /Zl /I"c:\EFI_Toolkit_2.0\include\efi" /I"c:\EFI_Toolkit_2.0\include\efi\em64t" c:\sandbox\efi_main.c
start /wait link /entry:main /dll /IGNORE:4086 efi_main.obj
start /wait fwimage.exe app efi_main.dll efi_main.efi
goto begin
请注意,如果您在visual studio中运行此功能,则可以使用所有很酷的Visual Studio环境选项来获取项目文件夹,项目输出等内容。但是无法启动批处理像这样的文件从VS Shell连续运行并将焦点返回到VS.此外,此文件永远不会完成运行,直到您给它焦点并按Ctrl-C结束它。