中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 12:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何判断参数是文件还是目录 查看 2,600 回复 5
楼 主 如何判断参数是文件还是目录 发表于 2006-06-03 20:17 ·  中国 辽宁 大连 电信
初级用户
积分 110
发帖 27
注册 2006-06-03 17:25
UID 56491
状态 离线
在批处理要对传入参数的的文件进行操作,如果文件没有,而目录有,操作时就会出错,所以想判断一下,我的操作是用if exist path\nul,但是长文件名时,判断不出来,应该怎么弄?
给批处理传入一个参数,如何判断它是文件名还是目录名?
2 发表于 2006-06-03 20:25 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re wentimao:

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

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

判断是否存在目录: if exist "%~f1\" ...
判断是否存在文件: if exist "%~f1" if not exist "%~f1\"...
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
3 发表于 2006-06-06 19:23 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re wentimao:

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

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

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

(for /f "usebackq" in ("%~f1") do ...)2>nul
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
4 发表于 2010-12-04 15:58 ·  中国 广东 东莞 电信
新手上路
积分 14
发帖 13
注册 2010-12-01 15:41
UID 178657
性别 男
状态 离线
Originally posted by willsort at 2006-6-3 20:25:
Re wentimao:

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

我想请教:怎么知道自己的脚本环境是COMMAND还是CMD?
5 发表于 2010-12-04 16:28 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
在什么系统下运行?
是在cmd直接运行还是在批处理中运行?
6 发表于 2010-12-04 17:06 ·  中国 广东 东莞 电信
新手上路
积分 14
发帖 13
注册 2010-12-01 15:41
UID 178657
性别 男
状态 离线
Originally posted by Hanyeguxing at 2010-12-4 16:28:
在什么系统下运行?
是在cmd直接运行还是在批处理中运行?

非常感谢你的回复,

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

终于看到一个在线人了握手、、、
论坛跳转: