4

我觉得这必须如此简单,不知何故我只是错过了一些东西。我有 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

我尝试在每行前面添加“开始”,虽然我看到每个命令都回显了,但只有第一个正在执行(即我只得到 efi_main.obj 而不是 .dll 或 .efi)。

这些也需要在 Visual Studio shell 中执行,只要我从 shell 中运行我的批处理文件,我认为这就足够了吗?

4

1 回答 1

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 结束它之前,该文件将永远不会完成运行。

于 2013-06-14T22:49:54.113 回答