Board logo

标题: 如何判断参数是文件还是目录 [打印本页]

作者: wentimao     时间: 2006-6-3 20:17    标题: 如何判断参数是文件还是目录

在批处理要对传入参数的的文件进行操作,如果文件没有,而目录有,操作时就会出错,所以想判断一下,我的操作是用if exist path\nul,但是长文件名时,判断不出来,应该怎么弄?
给批处理传入一个参数,如何判断它是文件名还是目录名?
作者: willsort     时间: 2006-6-3 20:25
Re wentimao:

      提问请注明你的系统环境(DOS/98/XP)和脚本环境(COMMAND/CMD),如果将这个参数写道你的用户签名中,可以不用每次都转贴这些数据。

      在CMD中判断文件或者目录的存在,一般不再用NUl了。

      判断是否存在目录: if exist "%~f1\" ...
      判断是否存在文件: if exist "%~f1" if not exist "%~f1\"...
作者: willsort     时间: 2006-6-6 19:23
Re wentimao:

      关于你在其它主题中提到的同名目录和文件的存在性判断问题,答复如下:

      1、在CMD和COMMAND中,极少会出现目录和文件完全同名同路径的情况,这是DOS/Windows的文件系统规则所不允许的;如果真的出现了,那应该属于系统的问题,应该由系统自己解决,而非由我们的代码来兼容这个问题。

      2、如果确实想判断“存在目录时同名的文件是否存在”,可以使用(但不推荐)如下的代码:

(for /f "usebackq" in ("%~f1") do ...)2>nul
作者: sohu     时间: 2010-12-4 15:58


  Quote:
Originally posted by willsort at 2006-6-3 20:25:
Re wentimao:

      提问请注明你的系统环境(DOS/98/XP)和脚本环境(COMMAND/CMD),如果将这个参数写道你的用户签名中,可以不用每次都转贴这些数据。 ...

我想请教:怎么知道自己的脚本环境是COMMAND还是CMD?
作者: Hanyeguxing     时间: 2010-12-4 16:28
在什么系统下运行?
是在cmd直接运行还是在批处理中运行?
作者: sohu     时间: 2010-12-4 17:06


  Quote:
Originally posted by Hanyeguxing at 2010-12-4 16:28:
在什么系统下运行?
是在cmd直接运行还是在批处理中运行?

非常感谢你的回复,

我看这些贴都好几年了,我以为。。。。呵呵

终于看到一个在线人了握手、、、