我正在尝试执行类似于Get Visual Studio 的操作,以使用 cmd在每个构建上运行 T4 模板forfiles
来转换 VS2008 中的每个模板。
如果我执行
forfiles /m "*.tt" /s /c "\"%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\1.2\TextTransform.exe\" @file"
然后我收到TextTransform.exe
' 的错误消息(解释将其作为参数传递的文本屏幕)。
如果我改为执行
forfiles /m "*.tt" /s /c "cmd /c echo Transforming @path && \"%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\1.2\TextTransform.exe\" @file"
然后它完美地工作。
为了调试这个,我创建了一个简单的命令行程序debugargs
,它简单地打印它接收到的参数的数量和它们的值。然后一些实验表明,直接将命令传递给的第一种形式forfiles
会导致第一个参数被吞下。例如
forfiles /m "*.tt" /s /c "debugargs.exe 1 2 3"
给出输出
2 arguments supplied
#1: 2
#2: 3
我能够找到的文档非常稀少,我认为没有任何提及这一点的可能性。它只是一个不起眼的错误,还是我错过了什么?