我不确定在这里做错了什么,但是我试图解析文件夹中的一些XML文件并获取每个文件名的子字符串。这是我在.bat文件中得到的:
for %%f in (*.xml) do (
echo %%f
echo %%f:~3,-4%%
)
第一个回显会很好地打印出文件名。但是第二个回声是我遇到的麻烦。我得到类似NewABCDEFG.xml的输出:
NewABCDEFG.xml
NewABCDEFG.xml:~3,-4%
我什么时候应该得到:
NewABCDEFG.xml
ABCDEFG
我不知道怎么了。如果我自己在命令行中运行substring命令,它可以正常工作。有什么建议么?
答案 0 :(得分:0)
使用以下脚本修复了该问题:
setlocal EnableDelayedExpansion
for %%f in (*.xml) do (
set filename=%%f
echo !filename:~7,-4!
)
按照帮助指南,设定行是我真正需要的,以便在运行时扩展环境变量。
答案 1 :(得分:0)
首先将test {
jacoco {
exclude("*equals", "*hashCode")
}
}
更改为%%f
,这将使其更易于阅读。
%%I
在这种情况下,无需延迟扩展。但是,我希望避免使用多命令行块:
for %%I in (*.xml) do echo %%I & echo %%~nI
还避免了替换变量和修饰符之间的混淆,例如,您可以使用for %%I in (*.xml) do call :DoIt %%I
exit /b
:DoIt
echo %1
echo %~n1
exit /b 0
.. %%a
或%%z
.. %%A
。