求一个bat批处理文件,可提取txt文件内容的前几个文本作为文件名

例:有一个文件名为31542.txt的文件,内容为331231111111.........现需要根据内容第1-5个文字作为文件名,即更改文件31542.txt为3312... 例:有一个文件名为31542.txt的文件,内容为3 3 1231111111.........
现需要根据内容第1-5个文字作为文件名,即更改文件31542.txt为33123.txt(跳过空格)
展开
 我来答
依梦琴瑶
高粉答主

2018-10-12 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
@echo off & title 以文本前五个字符作为文件名 By 依梦琴瑶

set "File=%~1"
if not defined File (
echo 请不要直接运行脚本,而是把需要处理的文件拖到脚本文件图标上
goto End
)

for /f "delims=" %%a in ('type "%File%"') do (
set "Str=%%~a"
goto Next
)
echo 提供的文件可能无法获取内容,或无内容
goto End

:Next
set "Str=%Str: =%"
set "Name=%Str:~0,5%"
ren "%File%" "%Name%%~x1" >nul 2>nul && (
echo "%~nx1" --^>^> "%Name%%~x1" 成功
) || (
echo "%~nx1" 重命名失败
)

:End
pause
call :Donate
exit

:Donate
set S0=fGRH
set S1=.:ailnhpst/
set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%
set S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit
更多追问追答
追问
可行,但是我需要的是批处理而不是单文件处理
追答
@echo off & title 以文本前五个字符作为文件名(批量处理) By 依梦琴瑶

::友情提示,本代码不适合处理非ANSI编码以及包含特殊字符的TXT文本。
for /f "delims=" %%i in ('dir /a-d/s/b *.txt') do (
call :ToRename "%%~i"
)
pause
call :Donate
exit

:ToRename
for /f "delims=" %%a in ('type "%~1"') do (
set "Str=%%~a"
goto Next
)
echo "%~nx1" 可能无法获取内容,或无内容
goto :eof

:Next
set "Str=%Str: =%"
set "Name=%Str:~0,5%"
ren "%File%" "%Name%%~x1" >nul 2>nul && (
echo "%~nx1" --^>^> "%Name%%~x1" 成功
) || (
echo "%~nx1" 重命名失败
)
goto :eof

:Donate
set S0=fGRH
set S1=.:ailnhpst/
set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%
set S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit
帐号已注销
2018-10-12 · TA获得超过1663个赞
知道小有建树答主
回答量:6318
采纳率:30%
帮助的人:916万
展开全部
BAT不会,会VB实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式