Alo*_*dal 3 windows cmd batch-file
如何检查给定路径的目标是否是目录?
说:
rem all these should work (by X: I mean a mapped UNC path)
set somepath=some\path
set somepath=c:\some\path
set somepath=x:\some\path
set somepath=\\server\some\path
set isdir=
rem now do some extremely complicated black magic to set %isdir%
if not _%isdir%_==__ (
rem do the directory thing
)
Run Code Online (Sandbox Code Playgroud)
它应该尽可能地与这些案例一起使用:
在极端情况下,例如无法告知(权限)时,后备值可以为no,它不是目录.
您不能使用if命令直接测试目录,但每个目录中都存在null(NUL)设备.因此,您可以测试空设备以确定目录是否存在.以下示例测试目录是否存在:
Run Code Online (Sandbox Code Playgroud)if exist c:\mydir\nul goto process'
对于UNC路径,我想出了:
@echo off
for /D %%I IN (%1) DO for /F "tokens=1 delims=-r" %%J IN ("%%~aI") DO if %%J==d echo %%I is a directory
Run Code Online (Sandbox Code Playgroud)
将它放在批处理文件中 - 需要使用要验证的给定对象的名称来调用它,例如myBat \\\myUncPath.你也可以放一个通配符,它会打印给定路径中的\\\myUncPath\\*所有目录- 将打印所有目录\\\myUncPath
注意:这应该适用于Windows 2000及更高版本,并且启用了命令扩展(不幸的是,不适用于NT4).我在XP上测试过它.