Batch file 如何检查文件夹是否存在?使用批处理脚本?

Batch file 如何检查文件夹是否存在?使用批处理脚本?,batch-file,Batch File,如果用户没有读取权限,如何检查文件夹是否存在 我正在编写一个脚本来为用户自动映射驱动器。用户对其文件夹具有读取权限,但对父文件夹没有读取权限。因此,我当前的if语句将直接转到else,即使文件夹确实存在 我当前的代码如下所示 if exist "\\domain\parent\%drive%" ( net use i: /delete net use i: \\domain\parent\%drive% /P:YES ) else if exist "\\domain\parent\

如果用户没有读取权限,如何检查文件夹是否存在

我正在编写一个脚本来为用户自动映射驱动器。用户对其文件夹具有读取权限,但对父文件夹没有读取权限。因此,我当前的
if语句
将直接转到
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%
,但对
父文件夹不具有读取权限

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

更新:如果用户具有对父文件夹和子文件夹的读取权限,则此代码有效,但即使用户没有对父文件夹的读取权限,是否有方法检查该文件是否存在?

这可以帮助您:

setlocal enableDelayedExpansion

for /f "delims=" %p in ('attrib ntuser.ini') do (
    set process=!%p:~0,8!
    echo !process! | findstr "H"
)
此命令执行以下操作:

  • 读取
    file.ext的属性
  • 查找权限结果是否包含
    H
    ,如果是,则表示文件是Hidden,您可以将
    H
    更改为您喜欢的任何内容,只需选中
    attrib/?

这是正确的
if
语句

if exist filename/foldername (
    command
) else (
    if blah == blah (
        command2
    ) else (
        command3
  )
)
您应该组合多个if语句来模拟
if、else-if、else
语句

这可以帮助您:

setlocal enableDelayedExpansion

for /f "delims=" %p in ('attrib ntuser.ini') do (
    set process=!%p:~0,8!
    echo !process! | findstr "H"
)
此命令执行以下操作:

  • 读取
    file.ext的属性
  • 查找权限结果是否包含
    H
    ,如果是,则表示文件是Hidden,您可以将
    H
    更改为您喜欢的任何内容,只需选中
    attrib/?

这是正确的
if
语句

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

您应该组合多个if语句来模拟
if,else-if,else
语句

看看:@zakir谢谢,但这个问题只涉及文件/文件夹是否存在。它根本不涉及权限。请看:@zakir谢谢,但这个问题只涉及文件/文件夹是否存在。它根本不涉及权限1。您的
attrib
/
findstr
方法还返回一个路径中包含
H
的文件,即使它没有隐藏。2.如果
,则使用
else没有问题;它只不过是另一个
if
命令,用作您所谓的“else命令”,没有括号,括号实际上是不必要的,但对于可读性很有用(除非没有
else
)。@aschipfl晚了3个月,但我解决了您提到的问题。1。您的
attrib
/
findstr
方法还返回一个路径中包含
H
的文件,即使它没有隐藏。2.如果
,则使用
else没有问题;它只不过是另一个
if
命令,用作您所谓的“else命令”,没有括号,括号实际上是不必要的,但对可读性很有用(除非没有
else
)。@aschipfl晚了3个月,但我解决了您提到的问题。