如果存在文件夹rmdir文件夹&& mkdir文件夹将不会执行任何命令之后&&

如果存在文件夹rmdir文件夹&& mkdir文件夹将不会执行任何命令之后&&

问题描述:

什么语法可以让我删除文件夹和创建它,而不管它之前(in)存在?如果存在文件夹rmdir文件夹&& mkdir文件夹将不会执行任何命令之后&&

if exist folder rmdir folder && mkdir folder 

将无法​​正常工作。 &&&||,| ...

哪一个是正确的语法呢?

操作系统:Windows 2012 外壳内容:cmd.exe *

PS我可以接受基于PS的答案,只要满足两个条件。 1)它必须从cmd.exe开始2)如果遇到任何错误(如缺少权限),它必须给cmd标准输出提供全部错误。

+1

括号。告诉CMD什么是你的命令。 '(如果存在文件夹rmdir文件夹)&(mkdir文件夹)'我想。 – 2016-12-14 21:02:04

+2

'rmdir文件夹&mkdir文件夹'你不需要测试(它使用电池电量来进行额外的磁盘访问并且速度很慢)我假定文件夹为空或者rmdir的语法错误,请参阅'rmdir /?'If folder在不空的情况下,您可以使用'rd/s/q文件夹' – 2016-12-14 21:05:44

+0

这两种解决方案都像一个魅力!即使当文件夹实际上是符号链接;)请把它变成答案,所以我可以接受它,并解释为什么单个'&',而不是从问题的代码(为了完整起见)的双重一个 –

由于您使用rmdir而没有/S开关,我假设感兴趣的文件夹是空的,那么为什么要删除并重新创建它?你可以简单地创建并抑制的情况下,错误信息已经存在,如:

mkdir "folder" 2> nul 

这种变异保持当然所有文件夹的属性和所有者。


如果你坚持删除并重新创建该文件夹,使用此:

rmdir "folder" 2> nul & mkdir "folder" 

这种变异销毁所有文件夹的属性和所有者。


如果该文件夹是保证是空的,你需要的/S开关rmdir; /Q也是有用的,以避免被提示真正删除文件夹,如:

rmdir /S /Q "folder" & mkdir "folder" 
+0

ouch。有问题的文件夹实际上是作为“mklink/D”创建的符号链接。所以它总是可以用rmdir删除。但是如果没有任何东西可以删除,rmdir会抱怨。 –

+0

这就是'2> nul'部分的用途 - 在情况下抑制rmdir的错误... – aschipfl