求一位高手把我的批处理加两个选项 多谢
解决时间 2021-02-24 06:23
- 提问者网友:情歌越听越心酸
- 2021-02-23 09:31
@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外
最佳答案
- 五星知识达人网友:荒野風
- 2021-02-23 10:39
帮您改好了,您试试看。
@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,如果不是,换一下这里即可。
我要举报
大家都在看
推荐资讯