2017-05-18 23 views
1

我有Z:取代到网络驱动器,例如:“如果存在Z: xfile NUL” 如果Z返回文件xfile真:被映射到网络驱动器

subst Z: \\fc\c 

xfile是文件(不是目录!)存在于替代驱动器的根目录中。下面的语句错误地呼应-exists-

if exist z:\xfile\nul echo -exists- 

这使得xfile似乎是一个目录,当它真是一个文件。

未替换的驱动器号不会导致问题。子网到非网络驱动器也不会导致问题。

是否有解决方案来处理看起来像一个subst或if-exist错误?

+0

如果我是来检查Z轴xfile文件名为:\我会用是否存在Z:\ xfile,如果我检查了在Z:\中我将使用名为xfile的目录。我会使用If Exist Z:\ xfile \ _I在十多年的时间里没有看到过使用'\ nul'。 – Compo

+0

这个解决方法怎么样:'dir/B/A:D“Z:\ xfile”> nul 2>&1 && echo -exists-'检查目录,'dir/B/A:-D“Z :\ xfile“> nul 2>&1 && echo -exists-'检查文件是否存在? – aschipfl

+0

@Compo如果存在\\ server \ drv \ fname \将(错误地)在fname是文件时返回true。我以前使用过\ fname \。检查目录,但是当fname是一个文件时,它给出了错误的肯定。我最近被告知我应该使用\ nul构造[link](http://stackoverflow.com/questions/138981/how-to-test-if-a-file-is-a-directory-in-a-batch -script),但现在在网络案例中失败了。 –

回答

0

这是一个普遍的结构,它应该从你的.bat文件的说法,(这个假定它是第一个参数%1工作:

@Echo Off 
For /F "Tokens=1-2 Delims=d" %%A In ("-%~a1") Do (
    If "%%B" NEq "" (
     Echo %1 is a directory 
    ) Else If "%%A" NEq "-" (
     Echo %1 is a file 
    ) Else (
     Echo %1 does not exist 
    ) 
) 
Pause 
+0

非常好...我不能打破它,它解决了我的问题!现在我不得不寻找%〜a1中9个字符的定义以备将来参考。在attrib输出中看起来不是相同的(例如,没有索引的“I”条目)。 –

0

不要使用\讷机制。

更好地利用这一点:(只需添加一个反斜杠)

if exist "%ALLUSERSPROFILE%\" (
    echo Folder exist 
) else (
    echo Folder does not exist 
) 
相关问题