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

[文件操作] [已解决]批处理中attrib命令有时候不能用是为什么?

  1. @echo off
  2. set /p path="请输入你的u盘盘符(如k):"
  3. echo 根目录的隐藏文件有:
  4. echo ----------------------------
  5. dir /b %path%:\*.* /a:h
  6. echo ----------------------------
  7. echo.
  8. echo 去除根目录文件的隐藏属性吗?&pause
  9. attrib  -s -h -r "%path%:\*.*"
  10. if not exist "%path%:\autorun.inf\" ren "%path%:\autorun.inf" "autorun.inf.病毒"
复制代码
运行这一段的时候显示'attrib' 不是内部或外部命令,也不是可运行的程序,不知道是为什么,我查看了system32里面有attrib.exe这个文件tt

[ 本帖最后由 abxialiang 于 2009-12-16 11:53 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

&&楼主,并不是attrib不能用,问题出在这个path上,path是系统变量也有着固定的值,cmd在执行命令时就会先

到path下去查找,顺序一般是C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;当前目录,

如果这些路径下均不存在这个命令,系统就会提示“**不是内部或外部命令,也不是可运行的程序”。于是一但

我们在cmd或bat中重设path的值,那么cmd执行命令时就会按照新的path路径到当前目录的顺序来进行搜索,回到

楼主的代码中,肯定会提示attrib不是内部或外部命令,也不是可运行的程序(注:能在system32下找到的都是外

部命令,找不到的才是内部命令,attrib本身是外部命令)。

  综上所述,我们平常在命名bat文件时,不可与系统命令以及变量同名,同时在代码中设置变量时,一样要注

意这一点,不然就会发生错误,有时甚至是后果很严重的错误!
***共同提高***

TOP

回复 2楼 的帖子

非常感谢版主的指点,现在可以用了

TOP

返回列表