0

我正在尝试在当前文件夹中获取文件名的子字符串。稍后我会将这些作为参数传递给某个命令,但就目前而言,我什至无法让 echo 工作:

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”。

4

1 回答 1

1

您需要使用延迟扩展来回显您的变量,因为您已将它们设置在一个for循环中。

您已经包含了启用它的行,您只需要将%'s 变成!'s

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"
于 2012-12-17T08:53:50.257 回答