2017-05-29 52 views
0

我如何检查是否一个文件夹,如果用户不具有读取权限的存在呢?如何检查文件夹是否存在?使用批处理脚本?

我写一个脚本为用户自动驱动器映射。用户已经读取了他们的文件夹的权限,但没有读取父文件夹的权限。所以我目前的if statement直接到else即使该文件夹确实存在。

我当前的代码看起来像这样

if exist "\\domain\parent\%drive%" (
    net use i: /delete 
    net use i: \\domain\parent\%drive% /P:YES 
) else if exist "\\domain\parent\%username%" (
    net use i: /delete 
    net use i: \\domain\parent\%username% /P:YES 
) else (
    echo error: folder not found 
    echo error: unable to map I drive 
    pause 
    exit 
) 

所以用户有权限读取的文件夹名称,结构化或者%drive%%username%,但他们没有读取权限parent文件夹。

我能够手动映射驱动器,但我想知道是否可以使用if exist来检查文件夹是否存在,即使用户没有对parent的读取权限?

UPDATE:此代码,如果用户有权限读取父和子文件夹,但有一些方法,以检查是否存在该文件,即使用户没有读权限到父文件夹?

+0

在看看:https://stackoverflow.com/questions/21033801/checking-if-a-folder-exists-using-a -bat-file – Zakir

+0

@zakir谢谢但这个问题只处理如果文件/文件夹存在。它根本不涉及权限 – hotlinks0

回答

0

这可以帮助你:

setlocal enableDelayedExpansion 

for /f "delims=" %p in ('attrib ntuser.ini') do (
    set process=!%p:~0,8! 
    echo !process! | findstr "H" 
) 

此命令执行:

    file.ext
  • 读取属性查找,如果许可结果包含H,如果是,则意味着该文件是^h idden,您可以更改H到任何你喜欢的,只是检查attrib /?

这是正确的if声明。

if exist filename/foldername (
    command 
) else (
    if blah == blah (
     command2 
    ) else (
     command3 
) 
) 

您应该结合多个if语句来模拟if, else if, else声明

+1

1.你的'attrib' /'findstr'方法还返回一个包含'H'的文件,即使它不是Hidden。 2.使用'else if'没有问题;它不过是另一个'if'命令,用作你所谓的“else命令”,没有周围的括号,这实际上并不是必需的,但对可读性很有用(你确实需要它们作为“(if)命令”,除非有不是'else')。 – aschipfl

+0

我会在以后工作.. – SteveFest

+0

@aschipfl迟了3个月,但我解决了你提到的问题。 – SteveFest

相关问题