[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. color 1f
  3. title 更改文件的“系统、隐藏”属性
  4. set /p file=请输入文件或目录的绝对路径:
  5. attrib  %file%>>1.tmp
  6. for /f "tokens=1 delims=&" %%i in (1.tmp) do set tmp="%%i"&del 1.tmp
  7. if %tmp:~4,2%== H (attrib %file% -h&attrib %file% +h +s&echo:已经为该文件添加系统属性!)
  8. if %tmp:~4,2%==S  (attrib %file% -s&attrib %file% +h +s&echo:已经为该文件添加隐藏属性!)
  9. if %tmp:~4,2%==SH (attrib %file% -h -s&echo:已经去掉了该文件的隐藏和系统属性!)
  10. pause>nul
复制代码


4楼的代码看得眼花...我初学批处理,只能这个样子了.如果将代码第5行的attrib %file%>>1.tmp 改成attrib /s %file%>>1.tmp 的话,如果你输入的是文件则无区别,如果输入的是路径的话则会枚举该目录下所有文件的属性并按照要求修改。

[ 本帖最后由 liaobiaoxing 于 2009-7-3 22:50 编辑 ]
1

评分人数

    • wxcute: 新方法,但有缺陷。无法处理两个属性都不具 ...PB + 3

TOP

我初学的批处理,对于代码确实比较头疼。但是对于系统工具有一定的认识。代码我肯定是试过的,没有任何问题,至于要求,我是按照楼主的,再加个情况也很简单。delims=&这个&是随意用的,因为我记错了。以为&是不可能存在于文件名中的,现在看来应该改成?或其它不能包含的比较合适,使用delims这个参数主要是把ATTRIB输出的属性和文件路径赋给tmp。因为不加delims这个参数的话,比如ATTRIB输出的格式:“A   H      C:\Documents and Settings\XXX\NTUSER.DAT”把这个直接赋给tmp的话,那么tmp将只会是A,因为系统默认空格为分隔符,所以我把delims参数设置成为&就可以把整个一串的值赋给tmp。而使用%tmp:~4,2%来判断HS属性。

[ 本帖最后由 liaobiaoxing 于 2009-7-4 17:20 编辑 ]

TOP

  1. @echo off
  2. color 1f
  3. title 更改文件的“系统、隐藏”属性
  4. set /p file=请输入文件或目录的绝对路径:
  5. attrib  %file%>>1.tmp
  6. for /f "tokens=1 delims=" %%i in (1.tmp) do set tmp="%%i"&del 1.tmp
  7. if "%tmp:~4,2%"==" H" (attrib %file% -h&attrib %file% +h +s&echo:已经为该文件添加系统属性!)
  8. if "%tmp:~4,2%"=="S " (attrib %file% -s&attrib %file% +h +s&echo:已经为该文件添加隐藏属性!)
  9. if "%tmp:~4,2%"=="SH" (attrib %file% -h -s&echo:已经去掉了该文件的隐藏和系统属性!)
  10. if "%tmp:~4,2%"=="  " (attrib %file% +h +s&echo:已经给文件加上隐藏和系统属性!)
  11. pause>nul
复制代码
多谢。。现在改正~刚学批处理确实有太多地方要注意。
1

评分人数

    • wxcute: 很好。还可以简化哦!PB + 6

TOP

返回列表