我有一些程序,其中一些有64位版本: foo.exe的 bar.exe bar64.exe等 所以想从文件名中提取2个最后一个字符(没有扩展名)然后做一些事情......
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "tokens=1,2 delims=." %%G in ('dir /b *.exe') do (
set _test=%%G
set _result=!_test:~-2!
echo !_result!
)
endlocal
exit
如果要提取的字符数不是2,这很有效。如果是2则回显变得疯狂。 是我做错了还是有些错误?
答案 0 :(得分:1)
您确实使用了整个文件名,因为.exe
是四个字符,您描述的错误不应该发生。
为了避免意外行为,可以使用任意两个字符简单地添加名称。
@echo off&setlocal enableextensions enabledelayedexpansion
for /f "tokens=*" %%G in ('dir /b *.exe') do (
set "_test=__%%~nG"
set _result=!_test:~-2!
echo:!_result!
)
编辑要避免报告回显状态,请使用与空格不同的命令分隔符。