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

[文本处理] 批处理怎样识别扩展名?

  1. @echo off
  2. echo              当前所在目录:%~d0%~p0
  3. md  poldh
  4. for /r %%i in [color=blue](*.*)[/color] do echo %%~xi>>poldh[color=red]\%%~xi.a[/color]
  5. for /f "delims=. tokens=1 [color=red]skip=2[/color] " %%a in ([color=red]'dir /o /b poldh[/color]\') do echo                           当前文件夹中的扩展名:%%a
  6. pause
  7. rd /s /q poldh
复制代码
由于为了防止扩展名识别重复,所以本人就用扩展名做文件名的想法来避免重复,不过,但是由于以上(标记为红色)代码的缘故对于以a,b开头的扩展名无法识别(由于要防止把自己生成的扩展名给识别了),本来想用拖拽的方法避免(把蓝色的代码用拖拽的目录代替),可是不知道怎么弄,所以求助帮忙解决下!在此先谢过

[ 本帖最后由 yunzhong 于 2011-1-10 13:39 编辑 ]

不包括子目录以及隐藏属性的文件
  1. @echo off
  2. set %~x0==
  3. for %%i in (*) do if not defined %%~xi (
  4.         echo 当前文件夹 %~dp0 中的扩展名:%%~xi
  5.         set %%~xi==
  6. )
  7. pause
复制代码
包括:
  1. @echo off
  2. set %~x0==
  3. for /f "delims=" %%i in ('dir /s/b/a-d') do if not defined %%~xi (
  4.         echo 扩展名:%%~xi
  5.         set %%~xi==
  6. )
  7. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-10 13:52 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 2楼 的帖子

for 除了不列举含隐藏属性的文件外,其他属性的文件都列举(如系统属性)。

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

评分人数

TOP

  1. if not defined %%~xi
复制代码
?? 判断是否赋值??
这句有什么用啊?
如果是重复赋值就会改变结果?
貌似在教程中defined 没怎么提的
求教!

TOP

还有就是,把这bat弄进文件夹中,肯定是有bat的扩展名的,如果不想要,能否把这bat去掉

TOP

回复 4、5楼 的帖子

已添加 set %~x0==,如果不想使用,例如也可以对dir使用绝对路径

ps:if not defined %%~xi (
        echo 扩展名:%%~xi
        set %%~xi==
)
如果新的扩展名,则因为没有执行set %%~xi==,所以不存在此变量名,if not defined %%~xi 判断不存在这个变量成功,则执行echo显示,同时将其设置为变量
如果为重复扩展名,if not defined %%~xi 判断存在这个变量,后面的命令不执行

[ 本帖最后由 hanyeguxing 于 2011-1-10 14:59 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2011-1-10 12:33 发表
不包括子目录以及隐藏属性的文件@echo off
set %~x0==
for %%i in (*) do if not defined %%~xi (
        echo 当前文件夹 %~dp0 中的扩展名:%%~xi
        set %%~xi==
)
pause包括:@echo off
set %~x0==
...


请问  set %~x0==和set %%~xi==   这两句是什么意思?  %~dp0是当前目录路径吗?没看到相关教程,请教下。一直很困惑!

TOP

回复 7楼 的帖子

set %~x0==将批处理自身的扩展名设置为变量
set %%~xi==将%%i对应文件的扩展名设置为变量
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表