我正在尝试在当前文件夹中获取文件名的子字符串。稍后我将把这些作为参数传递给某个命令但是现在我甚至无法使回声起作用:
setlocal EnableDelayedExpansion
for %%f in (*.mvx) do (
set a=%%f
echo %a%
echo %%a%%
echo %a:~3,8%
)
endlocal
pause
产生这种结果:
C:\1>(
set a=xx-20121213-mvl-0005.mvx
echo
echo %a%
echo ~3,8
)
ECHO is on.
%a%
~3,8
最后一个应该返回“20121213”。
答案 0 :(得分:1)
您需要使用延迟扩展来回显变量,因为您已在for
循环中设置它们。
您已经包含该行以启用它,您只需将%
转换为!
的
setlocal EnableDelayedExpansion
for %%f in (*.mvx) do (
set a=%%f
echo !a!
echo !a:~3,8!
)
endlocal
pause
的更新强> 的
要将整个脚本放在一行cmd命令上,您可以使用
cmd /v:on /c "for %f in (*.mvx) do set a=%f && echo !a! && echo !a:~3,8! && pause"