按你的要求,实现了可选择多个恢复的功能
下面代码执行生成 smalltool 文件夹 里面有 rn.bat 和 Returnx.bat
执行 rn.bat 后 生成backz.cmd
再次rn.bat的话 原来的back批处理会被加上编号,然后生成新的 backz.cmd
backz.cmd都是刚生成的。rn.bat会在back批处理首行写入时间和操作信息。
这个时候如果要恢复,可以打开Returnx.bat
它会列出每个back批处理对应的时间和当时选择的操作数,这个时候自己根据信息选择
一个Back文件名,输入。
通过Returnx.bat 执行 back 操作,会对应的删除那个back文件。
每次执行rn.bat的时候都会对back文件名做整理使其按顺序排好名字
- @set file="rn.bat" "Returnx.bat"
- @echo off
- for %%a in (%file%) do (call :setup %%~a)
- exit
- :setup
- if not exist smalltool md smalltool
- set "act="
- for /f "delims= eol=" %%a in (%~nx0) do (
- if "%%a"=="::%* end" (goto :eof)
- if defined act echo,%%a>>"smalltool\%*"
- if "%%a"=="::%*" errcommand>"smalltool\%*" 2>nul&set act=act
- )
- ::Returnx.bat
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in ('dir back* /b') do (
- set /p now=<%%a
- echo, %%~na -- !now!
- )
- set /p cho="输入对应的还原批处理脚本名称(无需格式):"
- call %cho%.cmd
- del %cho%.cmd
- echo,执行完成
- pause
-
- ::Returnx.bat end
- ::rn.bat
- @echo off &setlocal enabledelayedexpansion
- title 批量重命名工具
- echo, &echo, 请输入将执行批量重命名操作的路径,如: F:\tempfolder\
- echo, &echo, 注: 输入路径不需要加双引号,由批处理做统一处理.
- echo,
- :a
- set /p in="请输入操作路径:"
- if not exist "%in%" (echo, -输入不正确&echo, &goto :a)
- if not "%in:~-1%"=="\" (set in=%in%\)
- :b
- set /p in2="请输入将要批量重命名的文件的格式(如: txt):"
- if not exist "%in%*.%in2%" (echo, 不存在该格式 &echo, &goto :b)
- :
- set bk=1
- :sortback
- if exist back* (set "inp=%~dp0" &set "inp2=cmd" &set "spc=back" &call :listname ::)
- set inp=%in%
- set inp2=%in2%
-
- :
- echo,&echo, 1 批量把%inp% 目录下的 %inp2%文件按pak1~pakn 顺序重命名
- echo,&echo, 2 批量给文件后缀加s
- echo,
- :
- :c
- set /p inp3="请选择操作模式:"
- echo,::%date% , %time% , %inp% 选择的操作 %inp3% >backz.cmd
- if "%inp3%"=="1" (goto :listname)
- if "%inp3%"=="2" (goto :adds) else (echo, -请正确输入 &goto :c)
-
- :listname
- if "%1"=="" (set spc=pak)
- set /a n=1
- ren "%inp%*.%inp2%" *.x_x
- ::上面这句ren是为了避免偶尔出现的细节上的冲突
- for /f "tokens=*" %%a in ('dir "%inp%*.x_x" /b') do (
- %1 echo,ren "%inp%%spc%!n!.%inp2%" "%%a">>backz.cmd
- ren "%inp%%%a" %spc%!n!.%inp2%
- set /a n+=1
- )
- %1 echo,ren "%inp%*.x_x" *.%inp2%>>backz.cmd
- if "%1"=="::" (goto :eof)
- goto :over
- :
- :adds
- ren "%inp%*.%inp2%" *.%inp2%s
- echo,ren "%inp%*.%inp2%s" *.%inp2%>>backz.cmd
- goto :over
- :
- :over
- echo,任务结束。Press any key to exit...
- pause>nul &exit
-
- ::rn.bat end
复制代码
[ 本帖最后由 523066680 于 2009-7-26 19:02 编辑 ] |