永发信息网

求一位高手把我的批处理加两个选项 多谢

答案:2  悬赏:10  手机版
解决时间 2021-02-24 06:23
@echo off&title 修改文件名&cd/d "%~dp0"
setlocal enabledelayedexpansion
set "pre=~id"
set "fs=*.rpm"
set/a n=4,ch=0,q=n-1
mode con cols=40 lines=20
color 4f
:ff
cls
echo;
echo 注:此批处理会修改子目录所有模块格式!
echo;
echo; 更名选项:
echo; ================
echo; 1 修改模块至 %n% 位
echo;
echo; 2 填加前缀“%pre%”
echo;
echo; 3 去掉前缀“%pre%”
echo;
echo; Q 退 出
echo; ================
echo;
echo;
set/p ch=请输入选项序号:
set "ch=%ch: =%"
echo %ch%|findstr /ix "[1-3q]">nul||goto :ff
if /i "%ch%"=="q" exit /b
if %ch% equ 1 (
set "fs=%fs:~1%"
for /L %%i in (1,1,%q%)do (
set "n0=!n0!0"
set "fs=?!fs!"))
if %ch% equ 3 set "fs=%pre%%fs%"
for /f "delims=" %%i in ('dir/b/s "%fs%"') do (
set "fn=%%~ni"
if %ch% equ 1 (
set "fn=%n0%!fn!"
set "fn=!fn:~-%n%!%%~xi")
if %ch% equ 2 (
set "fq=yky!fn!"
set "fq=!fq:yky%pre%=!"
if "!fq!"=="yky!fn!" (set "fn=%pre%!fn!%%~xi"
)else set fn=)
if %ch% equ 3 (set fn=yky!fn!
set "fn=!fn:yky%pre%=!%%~xi")
if defined fn ren "%%i" "!fn!" 2>nul&& (
echo %%i ===^> !fn!
)||echo %%i --也许已存在!fn!同名文件,未更名)
set/p=处理完毕,按任意建退出... pause>nul&echo;
=====================================================
第一项是添加.rpm文件至4位 以0来填充
那么哪位大神帮我加一个第四项 删除4位ID前面的0
文件是这样的
0001.rpm修改成1.rpm
0022.rpm修改成22.rpm
0303.rpm修改成303.rpm
4004.rpm不修改
也就是说去掉.rpm前面所有的0
========================================================
添加第五项
把.bin文件修改成.rpm文件 除rom.bin外
最佳答案
帮您改好了,您试试看。
@echo off&title 修改文件名&cd/d "%~dp0"
setlocal enabledelayedexpansion
set "pre=~id"
set "fs=*.rpm"
set/a n=4,ch=0,q=n-1
mode con cols=40 lines=20
color 4f
:ff
cls
echo;
echo 注:此批处理会修改子目录所有模块格式!
echo;
echo; 更名选项:
echo; ================
echo; 1 修改模块至 %n% 位
echo;
echo; 2 填加前缀“%pre%”
echo;
echo; 3 去掉前缀“%pre%”
echo;
echo; 4 去掉文件名的无效“0”
echo;
echo; 5 修改bin为rpm(rom.bin除外)
echo;
echo; Q 退 出
echo; ================
echo;
echo;
set/p ch=请输入选项序号:
set "ch=%ch: =%"
echo %ch%|findstr /ix "[1-5q]">nul||goto :ff
if /i "%ch%"=="q" exit /b
if %ch% equ 1 (
set "fs=%fs:~1%"
for /L %%i in (1,1,%q%)do (
set "n0=!n0!0"
set "fs=?!fs!"))
if %ch% equ 3 set "fs=%pre%%fs%"
for /f "delims=" %%i in ('dir/b/s "%fs%"') do (
set "fn=%%~ni"
if %ch% equ 1 (
set "fn=%n0%!fn!"
set "fn=!fn:~-%n%!%%~xi")
if %ch% equ 2 (
set "fq=yky!fn!"
set "fq=!fq:yky%pre%=!"
if "!fq!"=="yky!fn!" (set "fn=%pre%!fn!%%~xi"
)else set fn=)
if %ch% equ 3 (set fn=yky!fn!
set "fn=!fn:yky%pre%=!%%~xi")
if defined fn ren "%%i" "!fn!" 2>nul&& (
echo %%i ===^> !fn!
)||echo %%i --也许已存在!fn!同名文件,未更名)
if %ch% equ 4 (
@for /f "delims=" %%i in ('dir /b *.rpm') do (
@set fn=0000%%~ni
@set fn=!fn:0000000=!
@set fn=!fn:000000=!
@set fn=!fn:00000=!
@set fn=!fn:0000=!
@set ext=%%~xi
@ren %%i !fn!!ext!
)
)
if %ch% equ 5 (
@for /f "delims=" %%i in ('dir /s /b *.bin') do (
@set ext=.rpm
@if "%%~nxi"=="rom.bin" @set ext=.bin
@ren "%%i" "%%~dpi%%~ni!ext!"
)
)
set/p=处理完毕,按任意建退出... pause>nul&echo;

另外,昨天后来又追答了您的问题,也请您采纳一下。
全部回答
@echo off for /f "delims=" %%a in ('dir/s/b d:\*.rar') do "c:\program files\winrar\winrar.exe" e -o+ "%%a" "%%~dpa" pause 要先确保你的winrar主程序位置是c:\program files\winrar\winrar.exe,如果不是,换一下这里即可。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
双回路供电时指某一个负荷从变电所引来两路电
怎么查询是否被录取
河南省精神病医院-老年精神科怎么去啊,有知
康佳彩电P2977S不开机故障维修求助
我昨天用支付宝给民生信用卡还款,支付宝已经
华为3910BBU上ACT常闪
沐坤化妆品店地址在什么地方,想过去办事
用简便计算125x18x4
排汗可以去湿吗?
【血溅鸳鸯楼】血溅鸳鸯楼的200字概括如题谢
石斛和蜂蜜一起吃有什么功
民乐县顺化镇我想知道这个在什么地方
home在键盘的哪里
谁知道投降派松江1975年11月第1次印刷小人书
doc文件打开后看不到内容
推荐资讯
08年的联想扬天电脑想自己改装,怎么做? 主板
在武汉有两张社保卡后来一年多都没有交过社保
在我的头上用英语怎么说
零利息债券是什么意思
艺术生高考志愿,只能填拿了合格证的学校吗
已知f(x)为偶函数,g(x)为奇函数,它们的定义域
清一休闲洗浴地址在哪,我要去那里办事
攻城掠地文官如何解雇
名佳宾馆在哪里啊,我有事要去这个地方
杨家塘头地址有知道的么?有点事想过去
刚打耳洞可以吃热气的吗?
寺库奢侈品有一手货么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?