Sur*_*ery 2 dos batch-file windows-7
我有一个小批处理文件,我正在尝试为Windows 7环境编写.它应该通过一个目录并回显文件名的最后四个字符.到目前为止我有:
@ECHO OFF
SETLOCAL
for /r C:\Users\userName\Desktop\testFolder %%g in (*) do (
Set fileName = %%~ng
echo %fileName:~-4%
)
Run Code Online (Sandbox Code Playgroud)
对于testFolder中的每个文件,所有回声都是"〜-4".我无法弄清楚出了什么问题,但后来我对精通批处理文件或dos并不熟悉.任何帮助将不胜感激,谢谢.
当该命令被读出发生的环境变量扩展,所以你%fileName:~-4%当被evaulated for被读出,这是之前的Set被执行.使用延迟扩展.
@ECHO OFF
SETLOCAL SETDELAYEDEXPANSION
for /r C:\Users\userName\Desktop\testFolder %%g in (*) do (
Set fileName=%%~ng
echo !fileName:~-4!
)
Run Code Online (Sandbox Code Playgroud)
另请注意,Set命令中的空格很重要.使用空格,您创建了一个fileName 带尾随空格的变量.