【问题标题】:mkdir immediatly after rmdir gives me access denied [closed]mkdir 在 rmdir 让我访问被拒绝后立即
【发布时间】:2020-05-11 18:33:03
【问题描述】:

我有一个文件夹(我们称之为F)。

我写了一个批处理文件

rmdir F /S /Q
mkdir F

当我调用 mkdir F 时,它让我访问被拒绝,可能是因为系统可能仍在删除 F。我该如何处理这个问题?

【问题讨论】:

  • 使用完整路径。我不知道你为什么期望它会起作用。
  • 丹尼尔,请阅读my comment 了解您的其他/上一个问题。
  • 事实上,rmdir 并没有给我任何错误,但是当我马上打电话给mkdir 时,它给了我访问被拒绝的错误。我读了你的评论,但它让我很困惑。为什么要输入文件夹来删除它?
  • 因为如果你在里面就不会删除,但是它的内容会被删除!试一试,我给了你使用的三行代码,并且使用了两种方法。
  • 但是在我移除的那一刻,我不在里面。我在父文件夹中。

标签: batch-file mkdir rmdir


【解决方案1】:

这样你更容易理解吗?

CD "F" 2>NUL && (
    RD /S/Q "." 2>NUL
    CD ..
) || (
    MD "F" 2>NUL
) || (
    Echo Cannot create F
    Timeout 3 /NoBreak >NUL
)

还是这个?

PushD "F" 2>NUL && (
    RD /S/Q "." 2>NUL
    PopD
) || (
    MD "F" 2>NUL
) || (
    Echo Cannot create F
    Timeout 3 /NoBreak >NUL
)

【讨论】:

  • 如果F 不存在,当我运行它时会发生什么?您写的两种可能性是否完全相同?
  • 为了这种可能性,我做了一个小的修改。如果F 不存在,您应该能够创建它,前提是您具有相关权限,并且驱动器是可写的。