批处理 输出文件名前几位或者后几位?

想要输出前几位或者后几位
代码:for /f "delims=" %i in ('dir D:\kakaka /b')do echo %~ni:~4
最后输出的是「文件名:~4」,而不是后四位或者前四位

您需要设置变量,而不是直接在%~ni后面加上:~4
设置好变量后,再进行变量调用和截取
set var=%~ni
echo !var:~4!

需要开启环境变量延迟命令哦!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-08-20
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off&mode con lines=3000
rem 截取文件名称开头和末尾的几位字符
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "folder=D:\kakaka"
if not exist "%folder%" (echo;"%folder%" 未找到&pause&exit)
if "%folder:~-1%" equ "\" set "folder=%folder:~,-1%"
for /f "delims=" %%a in ('dir /a-d-h/b "%folder%\"') do (
set "base=%%~na"
echo;"%%a"
setlocal enabledelayedexpansion
echo;前四位 "!base:~,4!"
echo;后四位 "!base:~-4!"
endlocal
)
echo;%#% +%$%%$%/%_% %z%
pause
exit追问

感觉这个太复杂了。有没有那种快捷口令什么的?能直接一两句话解决的。