[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
呵呵,我这个菜鸟好笨啊!!看不懂带for的语句,看不懂如何插入、与删除字符......

算了,给我一个成品吧!



挑战——批量修改后缀名、并同时颠倒文件名
   
      批处理的用途是——
      1、把目标文件夹(包含它的所有子目录)里,某类指定后缀名的文件,批量的修改为其它指定的后缀名。
      2、同时,把目标文件夹(包含它的所有子目录)里,某类指定后缀名的文件,批量的颠倒文件名。
      

      补充说明——
      1、批处理必须要支持:由用户在批处理的运行窗口,自行输入目标文件夹(或拖放获取路径)、原后缀名和新后缀名。
      2、目标文件夹的路径,有可能含有空格。
           比如“C:\Documents and Settings\Administrator”目录。
      3、目标文件夹的路径,有可能含有汉字。
            比如“C:\Documents and Settings\Administrator\桌面”目录。
      4、目标文件夹的路径,有可能含有特殊字符。
           比如"^"和“&”字符。
      5、具体改名的例子是:
           比如"1234.原后缀名",改名后就变为“4321.新后缀名”
      6、双后缀名的情况是:
           比如"1234.jpg.原后缀名",改名后就变为“gpj.4321.新后缀名”。
           总之,只认最后一个后缀名为真实后缀名。前面的,全部按文件名处理,整体颠倒!
      7、批处理必须要支持,对系统或隐藏属性文件的改名。但是,改名后,又必须恢复原来的属性。

[ 本帖最后由 lujice 于 2011-1-22 19:16 编辑 ]

TOP

  1. @echo off
  2. :Input_Folder
  3.     echo 请输入文件夹路径(或拖放文件夹到本窗口):
  4.     set Folder=
  5.     set /p Folder=   
  6.    
  7.     if not defined Folder goto Input_Folder
  8.     if not exist "%Folder:"=%" (
  9.         echo * 错误:不存在该文件夹
  10.         goto Input_Folder
  11.     )
  12. :Input_OldExt
  13.     set OldExt=
  14.     set /p OldExt=请输入原后缀名:
  15.    
  16.     if not defined OldExt goto Input_OldExt
  17. :Input_NewExt
  18.     set NewExt=
  19.     set /p NewExt=请输入新后缀名:
  20.    
  21.     if not defined NewExt goto Input_NewExt
  22. rem 去除路径中的引号、后缀中的“.”及前面的字符
  23. set "Folder=%Folder:"=%"
  24. set "OldExt=%OldExt:*.=%"
  25. set "NewExt=%NewExt:*.=%"
  26. for /f "delims=" %%i in ('dir /a:-d /b /s "%Folder%\*.%OldExt%"') do (
  27.     set fPath=%%~dpi
  28.     set fName=%%~ni
  29.     set fAttr=%%~ai
  30.     SetLocal EnableDelayedExpansion
  31.    
  32.     rem 判断有没有“系统”和“隐藏”属性,有则去除
  33.     set AttrList=
  34.     if "!fAttr:s=!" neq "!fAttr!" set AttrList= s
  35.     if "!fAttr:h=!" neq "!fAttr!" set AttrList=!AttrList! h
  36.     if defined AttrList (
  37.         attrib !AttrList: = -! "!fPath!!fName!.!OldExt!"
  38.     )
  39.    
  40.     rem 计算文件名的字符个数
  41.     set /a n = 8189, b = 0
  42.     for /l %%a in (1 1 13) do (
  43.         set /a "a = (n - b) / 2 + b"
  44.         for %%b in (!a!) do (
  45.             if "!fName:~%%b,1!"=="" (set n=!a!) else set b=!a!
  46.         )
  47.     )
  48.    
  49.     rem 颠倒文件名
  50.     set /a n -= 1
  51.     for /l %%n in (0 1 !n!) do (
  52.         set NewName=!fName:~%%n,1!!NewName!
  53.     )
  54.    
  55.     rem 重命名
  56.     ren "!fPath!!fName!.!OldExt!" "!NewName!.!NewExt!"
  57.    
  58.     rem 如果之前修改了文件属性,则改回去
  59.     if defined AttrList (
  60.         attrib !AttrList: = +! "!fPath!!NewName!.!NewExt!"
  61.     )
  62.    
  63.     EndLocal
  64. )
复制代码

[ 本帖最后由 tmplinshi 于 2011-1-23 10:23 编辑 ]
1

评分人数

TOP

感谢tmplinshi 老大!!

试验了!目前还没有发现Bug!!

这个工具,用于禁止(恢复)计算机某些功能的执行。比如禁止(恢复)“我的电脑——右键——管理”、比如禁止(恢复)“文件夹选项”、比如禁止(恢复)控制面板的所有项目、比如禁止(恢复)组策略、比如禁止(恢复)注册表......

呵呵!这种禁止方法,别人还能轻易破解吗???

万分感谢tmplinshi 老大!!

马上回去,抱起论坛的教程,慢慢咀嚼tmplinshi 老大的代码......

再次感谢tmplinshi 老大!!

TOP

虽然我是一个不折不扣的菜鸟,只会最简单的命令。但是,我敢于尝试......

过两天,我会发一个U盘病毒免疫批处理。有一点原创的DIY,就是加一个把隐私文件藏进去的功能,再加强下防删除、防更名的能力。

高手就不看了,全是用简单命令写的语句。

回去抠脑壳吧!

TOP

返回列表