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个月,但我解决了您提到的问题。