@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= 是可以把使用这个批处理的人拖进来或者输入的路径赋给 ...set lj= rem 设置变量名称 set /p lj= rem 把获取的值赋给lj 个人理解,错误的地方请指正。
Originally posted by modestleaner at 2011-1-23 20:36: 关于楼主和那个LZ贴的代码小菜有点不是很懂,望解答 在设置文件路径那段 set lj= set /p lj= 是可以把使用这个批处理的人拖进来或者输入的路径赋给 ...首先申明,我也是个很菜很菜的菜鸟,就连for语句都不怎么懂。共同学习吧! @echo off(不显示执行命令) :hsz(本段标签号) echo.&echo.&echo 请拖放要建立回收站的目录到本窗口! echo. set /p mulu=(给变量%mulu%赋值,支持手打输入或拖放) echo.&echo 请手打输入、或者粘贴输入回收站的名字。 echo.&echo 粘贴的方法是——在批处理的运行窗口点右键。 echo.&echo 如果回收站的名字中,包含空格、特殊字符和汉字, echo.&echo 则需要在名字的前后加上:英文的双引号—— " echo. set /p minzi==(手打输入给变量%minzi%赋值) md %mulu%\%minzi%(在指定目录下建立指定名字的文件夹) attrib +s +h %mulu%\%minzi%(更改它的属性为系统、隐藏) (echo [.ShellClassInfo] echo CLSID={645FF040-5081-101B-9F08-00AA002F954E})>%mulu%\%minzi%\desktop.ini(把括号内的字符写入目标文件夹下的“desktop.ini”文件) attrib +s +h %mulu%\%minzi%\desktop.ini(更改“desktop.ini”文件的属性为系统、隐藏) echo.&echo 回收站已建立成功! echo.&echo 打开看看吧! echo. pause(暂停) start "" %mulu%(打开建立回收站的目录) goto (上级菜单的标签号) [ Last edited by lujice on 2011-1-24 at 15:47 ]
Originally posted by glodboy at 2011-1-24 12:09: set lj= rem 设置变量名称 set /p lj= rem 把获取的值赋给lj 个人理解,错误的地方请指正。首先感谢楼上各位的解答,不过恐怕兄台这里理解错了
Originally posted by modestleaner at 2011-1-23 20:36: 关于楼主和那个LZ贴的代码小菜有点不是很懂,望解答 在设置文件路径那段 set lj= set /p lj= 是可以把使用这个批处理的人拖进来或者输入的路径赋给 ...后缀不能拖进去。把文件拖进去后,显示的是包含文件名的完整路径。除非,你再用退格键,删除多余的字符只留下后缀名。但是这样做,和手打输入后缀名有何区别? [ Last edited by lujice on 2011-1-24 at 19:49 ]
Originally posted by modestleaner at 2011-1-23 20:36: 关于楼主和那个LZ贴的代码小菜有点不是很懂,望解答 在设置文件路径那段 set lj= set /p lj= 是可以把使用这个批处理的人拖进来或者输入的路径赋给 ...后缀不能拖进去。把文件拖进去后,显示的是包含文件名的完整路径。除非,你再用退格键,删除多余的字符只留下后缀名。但是这样做,和手打输入后缀名有何区别?
Originally posted by lujice at 2011-1-24 19:48: 后缀不能拖进去。把文件拖进去后,显示的是包含文件名的完整路径。除非,你再用退格键,删除多余的字符只留下后缀名。但是这样做,和手打输入后缀名有何区别?嗯,我知道问价后缀名不能拖进去。我的意思是那么那句话不是多余的么? 既然后缀不能拖进去,只有靠手输入的话。