联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off :0 cls echo. echo. ╭────────╮ echo. ╭─────┤ 使 用 说 明 ├────╮ echo. │ ╰────────╯ │ echo. │ │ echo. │ 1、本工具的用途是——把指定目录 │ echo. │ 里,某类指定后缀名的文件,批 │ echo. │ 量的修改为其它指定的后缀名。 │ echo. │ │ echo. │ 2、每一步输入完毕,都请敲回车! │ echo. │ │ echo. │ 3、注意——只输入后缀名,不要 │ echo. │ 输入后缀名前的“.” │ echo. │ │ echo. │ 4、文件夹的路径中如有空格和特殊 │ echo. │ 字符,请手打输入,不要拖放! │ echo. │ │ echo. ╰───────────────────╯ echo.&echo 请输入文件夹的路径,或拖放文件夹到本窗口 set LJ= set /p LJ= if /i "%LJ%"=="" goto 0 echo.&echo 请输入修改前的后缀名: set q= set /p q= if /i "%q%"=="" goto 0 echo.&echo 请输入修改后的后缀名: set h= set /p h= if /i "%h%"=="" goto 0 for /r %LJ% %%i in (*.%q%) do ren %%i *.%h% echo.&echo. 后缀名已批量修改成功! echo.&echo. 请打开文件夹看看吧! start %LJ% pause goto 0
@echo off :hsz cls echo.&echo.&echo 请拖放要建立回收站的目录到本窗口! echo. set /p mulu= echo.&echo 请手打输入、或者粘贴输入回收站的名字。 echo.&echo 粘贴的方法是——在批处理的运行窗口点右键。 echo.&echo 如果回收站的名字中,包含空格、特殊字符和汉字, echo.&echo 则需要在名字的前后加上:英文的双引号—— " echo. set /p minzi= md %mulu%\%minzi% attrib +s +h %mulu%\%minzi% (echo [.ShellClassInfo] echo CLSID={645FF040-5081-101B-9F08-00AA002F954E})>%mulu%\%minzi%\desktop.ini attrib +s +h %mulu%\%minzi%\desktop.ini echo.&echo 回收站已建立成功! echo.&echo 打开看看吧! echo. pause start "" %mulu% goto (上级菜单的标签号)
@echo off if "%1" equ "" echo.须要参数,例如:%~0 *.txt&exit/b SET "LOG=\ReDo.BAT" for %%i in (%*) do ( cd/d "%%~di" echo.处理:"%%~nxi" call:reverse "%%~nxi" ) goto:end :reverse echo.CD/D "%~dp1">>"%LOG%" set "fname=%~1" set "temp_name=%~1" set new_name= :LOOP set temp_name=%temp_name:~0,-1% if "%temp_name%" equ "" goto:out set new_name=%new_name%%temp_name:~-1% goto:LOOP :out echo.REN "%new_name%" "%fname%">>"%LOG%" ren "%fname%" "%new_name%" goto:eof :end echo.撤消,请运行: "%LOG%" to cancel pause
@echo off :Input_Folder echo 请输入文件夹路径(或拖放文件夹到本窗口): set Folder= set /p Folder= if not defined Folder goto Input_Folder if not exist "%Folder:"=%" ( echo * 错误:不存在该文件夹 goto Input_Folder ) :Input_OldExt set OldExt= set /p OldExt=请输入原后缀名: if not defined OldExt goto Input_OldExt :Input_NewExt set NewExt= set /p NewExt=请输入新后缀名: if not defined NewExt goto Input_NewExt rem 去除路径中的引号、后缀中的“.”及前面的字符 set "Folder=%Folder:"=%" set "OldExt=%OldExt:*.=%" set "NewExt=%NewExt:*.=%" for /f "delims=" %%i in ('dir /a:-d /b /s "%Folder%\*.%OldExt%"') do ( set fPath=%%~dpi set fName=%%~ni set fAttr=%%~ai SetLocal EnableDelayedExpansion rem 判断有没有“系统”和“隐藏”属性 set AttrList= if "!fAttr:s=!" neq "!fAttr!" set AttrList= s if "!fAttr:h=!" neq "!fAttr!" set AttrList=!AttrList! h if defined AttrList ( attrib !AttrList: = -! "!fPath!!fName!.!OldExt!" ) rem 计算文件名的字符个数 set /a n = 8189, b = 0 for /l %%a in (1 1 13) do ( set /a "a = (n - b) / 2 + b" for %%b in (!a!) do ( if "!fName:~%%b,1!"=="" (set n=!a!) else set b=!a! ) ) rem 颠倒文件名 set /a n -= 1 for /l %%n in (0 1 !n!) do ( set NewName=!fName:~%%n,1!!NewName! ) rem 重命名 ren "!fPath!!fName!.!OldExt!" "!NewName!.!NewExt!" rem 如果之前修改了文件属性,则改回去 if defined AttrList ( attrib !AttrList: = +! "!fPath!!NewName!.!NewExt!" ) EndLocal )
Originally posted by modestleaner at 2011-1-23 20:36: 关于楼主和那个LZ贴的代码小菜有点不是很懂,望解答 在设置文件路径那段 set lj= set /p lj= 是可以把使用这个批处理的人拖进来或者输入的路径赋给 ...
Originally posted by glodboy at 2011-1-24 12:09: set lj= rem 设置变量名称 set /p lj= rem 把获取的值赋给lj 个人理解,错误的地方请指正。
Originally posted by lujice at 2011-1-24 19:48: 后缀不能拖进去。把文件拖进去后,显示的是包含文件名的完整路径。除非,你再用退格键,删除多余的字符只留下后缀名。但是这样做,和手打输入后缀名有何区别?