求一个bat批处理文件,可提取txt文件内容的前几个文本作为文件名
例:有一个文件名为31542.txt的文件,内容为331231111111.........现需要根据内容第1-5个文字作为文件名,即更改文件31542.txt为3312...
例:有一个文件名为31542.txt的文件,内容为3 3 1231111111.........
现需要根据内容第1-5个文字作为文件名,即更改文件31542.txt为33123.txt(跳过空格) 展开
现需要根据内容第1-5个文字作为文件名,即更改文件31542.txt为33123.txt(跳过空格) 展开
2个回答
展开全部
@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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询