我想在批处理文件中包装一个Perl单行程序.对于(平凡的)示例,在Unix shell中,我可以引用如下命令:
perl -e 'print localtime() . "\n"'
Run Code Online (Sandbox Code Playgroud)
但DOS使用这个有用的错误消息扼杀了它:
在-e第1行的EOF之前的任何地方都找不到字符串终结符"'".
在.bat文件中执行此操作的最佳方法是什么?
我正在使用批处理目标,我希望能够执行OnError清理,该清理特定于发生错误的迭代.这是一个完全通用的例子:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build">
<ItemGroup>
<Example Include="Item1">
<Color>Blue</Color>
</Example>
<Example Include="Item2">
<Color>Red</Color>
</Example>
</ItemGroup>
<Target Name="Build"
Inputs="@(Example)"
Outputs="%(Example.Color).txt">
<Error Text="An error occurred during %(Example.Color)" />
<OnError ExecuteTargets="HandleErrors" />
</Target>
<Target Name="HandleErrors">
<Message Text="Do some cleanup about %(Example.Color)" Importance="high" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
当Color为Blue时,Build目标失败.但HandleErrors目标运行两次,每种颜色一次.有没有办法让它只运行失败期间活动的颜色?