Board logo

标题: 【已结】>nul<nul我明白了,可是\nul是什么意思呢? [打印本页]

作者: aresk    时间: 2008-12-29 21:00     标题: 【已结】>nul<nul我明白了,可是\nul是什么意思呢?

  1. if not exist %SystemRoot%\Minidump\NUL del /f /q /s %SystemRoot%\Minidump\*.*>nul 2>nul
复制代码

这里面的\NUL是什么意思啊,什么作用??
我输入的时候显示“拒绝访问”啊。
谢谢
作者: pusofalse    时间: 2008-12-29 22:15

if not exist %SystemRoot%\Minidump\NUL 等效于if not exist %SystemRoot%\Minidump\,一般情况下也等效于if not exist %SystemRoot%\Minidump,但如果系统分区下有一个名为Minidump的文件,同样会返回为真。在后面加\或\nul就是为了避免这种情况。nul代表空设备,这个要好好体会了,可以建立一个文件(夹)命名为nul测试一下。
另外,你的语句的意思是“如果不存在%systemRoot%\Minidump文件夹,则删除里面的一切”??
作者: aresk    时间: 2009-1-1 15:26

谢谢斑竹!!!
作者: aresk    时间: 2009-1-6 15:08     标题: 再问\nul{pusofalse 请进}

我以前的问题:
  1. if not exist %SystemRoot%\Minidump\NUL del /f /q /s %SystemRoot%\Minidump\*.*>nul 2>nul
复制代码
这个中\nul的意思
==================
版主解答:
if not exist %SystemRoot%\Minidump\NUL 等效于if not exist %SystemRoot%\Minidump\,一般情况下也等效于if not exist %SystemRoot%\Minidump,但如果系统分区下有一个名为Minidump的文件,同样会返回为真。在后面加\或\nul就是为了避免这种情况。nul代表空设备,这个要好好体会了,可以建立一个文件(夹)命名为nul测试一下。
另外,你的语句的意思是“如果不存在%systemRoot%\Minidump文件夹,则删除里面的一切”??
==================
我的问题:首先,不管是建立文件或文件夹,都不可以取NUL这个名字
其次:我问题中的代码就是出自我从本论坛下的一个批处理工具中的,全部代码如下
  1. @echo off
  2. color f0
  3. echo.
  4. echo 正在安全地自动清除垃圾文件……
  5. del /f /q %systemdrive%\*.tmp>nul 2>nul
  6. del /f /q %systemdrive%\*._mp>nul 2>nul
  7. del /f /q %systemdrive%\*.log>nul 2>nul
  8. del /f /q %systemdrive%\*.gid>nul 2>nul
  9. del /f /q %systemdrive%\*.chk>nul 2>nul
  10. del /f /q %systemdrive%\*.old>nul 2>nul
  11. del /f /q %windir%\*.bak>nul 2>nul
  12. del /f /q %windir%\*.tmp>nul 2>nul
  13. del /f /q %windir%\prefetch\*.*>nul 2>nul
  14. del /f /s /q %systemdrive%\recycled\*.*
  15. del /f /q "%ALLUSERSPROFILE%\Documents\DrWatson\*.*">nul 2>nul
  16. del /f /q "%USERPROFILE%\Cookies\*.txt">nul 2>nul
  17. del /f /q /s "%TEMP%\*.*">nul 2>nul
  18. del /f /q /s "%Systemroot%\Prefetch\*.*">nul 2>nul
  19. del /f /q "%USERPROFILE%\Recent\*.*">nul 2>nul
  20. del /f /q "%USERPROFILE%\Application Data\Microsoft\Office\Recent\*.lnk">nul 2>nul
  21. del /f /q /s "%USERPROFILE%\Local Settings\Temp\*.*">nul 2>nul
  22. rd /s /q %windir%\temp & md %windir%\temp>nul 2>nul
  23. if not exist %SystemRoot%\Minidump\NUL del /f /q /s %SystemRoot%\Minidump\*.*>nul 2>nul
  24. del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*">nul 2>nul
复制代码

问题代码就是其中倒数第贰行
谢谢
作者: 随风    时间: 2009-1-6 17:13

仍不明白楼主的问题在哪里?
你不是吧 \nul 和 >nul 搞混了吧???
作者: Batcher    时间: 2009-1-6 17:46

建议:
1、不要重复发帖
2、不要指定xxx进
作者: aresk    时间: 2009-1-6 20:23

明白了,我自己解决吧。
不过这个代码确实是你们论坛上发表得。
作者: Batcher    时间: 2009-1-6 20:31

我的问题:首先,不管是建立文件或文件夹,都不可以取NUL这个名字

nul是系统保留字,因此不允许创建这样的文件/文件夹,类似的保留字还有Con, Prn, Aux, Nul, Lpt1, Com2等,如果感兴趣,可以google之。
不过这个代码确实是你们论坛上发表得。

那个代码在网上被转载的泛滥成灾了,不见得是本论坛原创。不过,无论哪个论坛发表的,不影响大家学习知识即可。
作者: Batcher    时间: 2009-1-6 20:32

明白了,我自己解决吧。

你自己解决以后,别忘了把自己的心得体会跟大家分享一下^_^
作者: aresk    时间: 2009-1-6 21:01

好吧,我说下我得想法。
1.先说下%SystemRoot%/minidump这个文件夹下面文件是个什么东西
以下得是我GOOGLE得:
=================================
MiniDump :小存储器转储文件夹
小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求启动卷上有一个至少为 2 MB 的页面文件。在运行 Microsoft Windows 2000 或更高版本的计算机上,计算机每次意外停止时 Windows 都会新建一个文件。这些文件的历史记录按照日期命名,存储在以下文件夹中,如:
C:\WINDOWS\Minidump\Mini010806-02.dmp

该转储文件类型包括以下信息:
• Stop 消息及其参数和其他数据
• 加载的驱动程序的列表
• 已停止的处理器的上下文 (PRCB)
• 已停止的进程的信息和内核上下文 (EPROCESS)
• 已停止的进程的信息和内核上下文 (ETHREAD)
• 已停止的线程的内核模式调用堆栈
当硬盘空间有限时,小存储器转储文件十分有用。但是,由于包括的信息有限,因此,通过分析此文件,可能无法发现并非由正在运行的线程在出现问题时直接导致的错误。

用于读取小存储器转储文件的工具
您可以使用转储检查实用工具 (Dumpchk.exe) 加载小存储器转储文件,还可以使用 Dumpchk.exe 验证是否正确创建了存储器转储文件。转储检查实用工具不要求访问调试符号。Microsoft Windows 2000 支持工具和 Microsoft Windows XP 支持工具中包含有转储检查实用工具。
=====================================
根据以上信息,我觉得这个文件夹下得东西对于一般用户没什么作用
2,然后说下那条语句
那个问题语句再实际中无法删除MINIDUMP下得文件,确实如此
所以,我觉得应该改成
  1. if exist %SystemRoot%\Minidump\*.* del /f /q /s %SystemRoot%\Minidump\*.*>nul 2>nul
  2. pause>nul
复制代码

3,说句心里话,我现在都不知道作者得意图是想干什么,而且也不明该这个\nul(不是>nul)是个什么作用。但愿有人可以解决这个问题。
作者: Batcher    时间: 2009-1-6 21:42     标题: 回复 10楼 的帖子

1、你的理解正确,确实没用,那段代码本来就是要删除系统垃圾文件的。
2、这个\nul是为了判断%SystemRoot%\Minidump是文件夹,而不是文件,2楼解释过。在这里,一定程度上可以理解为\nul和\*.*等效。
3、如上。
作者: aresk    时间: 2009-1-6 21:46

终于明白了,谢谢!!!!!!
作者: aresk    时间: 2009-1-6 21:50

E:\>if exist e:\nu\ echo 1
1
E:\>if exist e:\nu echo 1
1
E:\>if exist e:\nu echo 1
E:\>if exist e:\nu\nul echo 1
E:\>if exist e:\nu\nul echo 1
1
E:\>if exist e:\nu echo 1
1
E:\>if exist e:\nu\ echo 1
E:\>if exist e:\nu\nul echo 1




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