Board logo

标题: [文件操作] 批处理怎么不能显示隐藏文件呢? [打印本页]

作者: goofy123    时间: 2009-12-26 14:39     标题: 批处理怎么不能显示隐藏文件呢?

  1. @echo off
  2. for %%i in (D E F G) do for /f "delims=" %%j in ('dir %%i:\ /a:h /b /n') do attrib -h -r /s "%%~nxj"
  3. pause
复制代码
运行过后,f:\test\test.word 文件还是隐藏的,郁闷哦。请大侠帮看看呀

[ 本帖最后由 goofy123 于 2009-12-26 16:33 编辑 ]
作者: Batcher    时间: 2009-12-26 15:19

把@echo off删除,再运行一遍,看看执行过程,自己先试试思考一下为什么。
作者: nerfg002    时间: 2009-12-26 15:20

你dir出来的是各个盘主目录下的文件 可以加上/S
而且dir也有问题 不要加/n 开关
建议先去掉echo off
作者: goofy123    时间: 2009-12-26 15:41

原帖由 goofy123 于 2009-12-26 14:39 发表
@echo off
for %%i in (D E F G) do for /f "delims=" %%j in ('dir %%i:\ /a:h /b /n') do attrib -h -r /s "%%~nxj"
pause

运行过后,f:\test\test.word 文件还是隐藏的,郁闷哦。请大侠帮看看呀


在1楼2楼的指点下,作出如下修改:
@echo off
for %%i in (D E F) do for /f "delims=" %%j in ('dir %%i:\ /a:h  /b /s ') do attrib -h -r "%%j" /s /d
pause

我个人的理解是:
1 不能用"%%~nxj" 扩展,因为文件夹没有扩展名,双引号一定要加上。
2 /s /d 放在变量前或者变量后 没有关系把
3  有点不解的是:批处理运行界面弹出如下的提示:
未重设系统文件 - D:\装机软件\njmes\image\Thumbs.db
未重设系统文件 - E:\RECYCLER
未重设系统文件 - E:\System Volume Information
未重设系统文件 - E:\RECYCLER\S-1-5-21-682003330-484061587-1801674531-500
未重设系统文件 - E:\RECYCLER\S-1-5-21-682003330-484061587-1801674531-500\deskt
.ini
未重设系统文件 - F:\RECYCLER

有点疑惑
作者: Batcher    时间: 2009-12-26 15:44     标题: 回复 4楼 的帖子

  1. attrib D:\装机软件\njmes\image\Thumbs.db
复制代码
看看这个命令的结果,再试试自己思考一下为什么。
作者: neorobin    时间: 2009-12-26 15:48     标题: 回复 4楼 的帖子

去隐藏属性时, 最好是 -s -h -r 三个参数一起用
  1. @echo off
  2. for %%i in (D E F) do for /f "delims=" %%j in ('dir %%i:\ /a:h /b /s ') do attrib -s -h -r "%%j" /s /d
  3. pause
复制代码

作者: goofy123    时间: 2009-12-26 16:09

原帖由 neorobin 于 2009-12-26 15:48 发表
去隐藏属性时, 最好是 -s -h -r 三个参数一起用@echo off
for %%i in (D E F) do for /f "delims=" %%j in ('dir %%i:\ /a:h /b /s ') do attrib -s -h -r "%%j" /s /d
pause


加了-s参数后,果然没有了那些提示,可是会出现另一些提示:
拒绝访问 - D:\System Volume Information
拒绝访问 - E:\System Volume Information
拒绝访问 - F:\System Volume Information
作者: goofy123    时间: 2009-12-26 16:20

原帖由 Batcher 于 2009-12-26 15:44 发表
attrib D:\装机软件\njmes\image\Thumbs.db看看这个命令的结果,再试试自己思考一下为什么。


恢复Batcher老大:
用attrib查看Thumbs.db的属性 发现是 : A    SH      D:\装机软件\njmes\image\Thumbs.db
attrib /? 里的说明
attributes   D  目录                R  只读文件
              H  隐藏文件            A  准备存档的文件
              S  系统文件            -  表示“否”的前缀

dir %%i:\ /a:h /a-s /a-a /b /s   我用了/a-s排除具有系统属性的文件

现在的代码如下:
  1. @echo off
  2. for %%i in (D E F) do for /f "delims=" %%j in ('dir %%i:\ /a:h /a-s /b /s ') do attrib -s -h -r "%%j" /s /d
  3. pause
复制代码

批处理只有左上角一个光标在闪,貌似没运行。

改成@echo on 运行时
C:\Documents and Settings\Administrator\桌面>for %i in (D E F) do for /F "delims
=" %j in ('dir %i:\ /a:h /a-s /b /s ') do attrib -s -h -r "%j" /s /d
C:\Documents and Settings\Administrator\桌面>for /F "delims=" %j in ('dir D:\ /a
:h /a-s /b /s ') do attrib -s -h -r "%j" /s /d
光标在这个地方一直跳动
作者: nerfg002    时间: 2009-12-26 16:53

文件夹没有扩展名也可以扩展 %~nx1得到的就是文件夹名称 如果只用 %~n1 如果文件夹中包含“.”符号则只返回最后一个.前面的部分
作者: neorobin    时间: 2009-12-26 17:12     标题: 回复 7楼 的帖子

System Volume Information
是系统还原保存备份数据的文件夹, 可以事先关闭系统还原服务
  1. rem 禁用和停止系统还原服务
  2. sc config srservice start= DISABLED
  3. sc stop srservice
复制代码

作者: neorobin    时间: 2009-12-26 17:22     标题: 回复 8楼 的帖子

/a:h /a-s 两个 /a 参数, 我想只会有后一个生效, 你可以合2为1 /ah-s
  1. @echo off
  2. for %%i in (D E F) do for /f "delims=" %%j in ('dir %%i:\ /ah-s /b /s ') do attrib -s -h -r "%%j" /s /d
  3. pause
复制代码

作者: goofy123    时间: 2009-12-27 21:31

回11楼:
/a:h /a-s 两个 /a 参数, 我想只会有后一个生效, 你可以合2为1 /ah-s
确实,在这种情况下只有后一个命令会生效,谢谢你的建议哈,没想到还可以这么写哈。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2