转义批处理文件中的所有内容

时间:2015-06-29 15:44:29

标签: windows batch-file cmd

我有一个我想要运行的命令列表(由nmake生成并使用事件跟踪获得)。显而易见的方法是将它们放在批处理文件中。这适用于简单的命令,但其中一个结果如下:

C:\Windows\system32\cmd.exe /c for %I in (..\..\bin\*) do @for %J in ("%~nI.exe: $(srcdir)/bin/%~nI" "  $(ECHO) generating $(@)" "  $(Q) copy /y /b $(STUBPROGRAM) $(@) > nul" "    $(Q) echo.>>$(@)" " $(Q) echo.>>$(@)" " $(Q) copy /b $(@)+$(srcdir:/=\)\bin\%~nI $(@) > nul" "" ) do @echo.%~J>>scriptbin.mk

哪个cmd barfed:

The following usage of the path operator in batch-parameter
substitution is invalid: %~nI.exe: $(srcdir)/bin/%~nI" "        $(ECHO) generating $(@)" "      $(Q) copy /y /b $(STUBPROGRAM) $(@) > nul" "    $(Q) echo.>>$(@)" "     $(Q) echo.>>$(@)" "     $(Q) copy /b $(@)+$(srcdir:/=\)\bin\%~nI $(@) > nul" "" ) do @echo.%~J>>scriptbin.mk

我认为这不应该是非常令人惊讶的,因为从批处理文件中读取命令的行为会执行各种替换,特殊字符的解释等等。

我可以尝试通过转义来修改批处理文件中的内容,但这需要执行转义的程序才能知道有关cmd如何解析事物以及需要转义的内容的所有信息。我可以看到自己仍在努力修复明年这个时候的错误。

我可以编写自己的程序来运行批处理文件,而不进行任何替换或解释,但这不如具有可以按原样运行的批处理文件那样好。

有没有办法说出“逃避一切”或“关闭此文件其余部分的替换”或其他类似内容?

1 个答案:

答案 0 :(得分:0)

如果使用以下命令运行批处理文件,似乎可以解决此问题:

cmd <foo.bat
相关问题