2016-12-14 10 views
0

Каков синтаксис, который позволит мне удалить папку и создать ее независимо от ее предшествующего (в) существования?если есть папка с папкой rmdir && mkdir папка не будет выполнять никакую команду после этого &&

if exist folder rmdir folder && mkdir folder 

НЕ будет работать. Ни замены && с &, ||, | ...

Каким является правильным синтаксисом тогда?

ОС: Windows 2012 Shell: cmd.exe *

PS Я мог бы принимать ответы на основе PS, пока выполняются два условия. 1) Он должен начинаться с cmd.exe. 2) Он должен приносить значимые ошибки в стандартный вывод cmd, если есть какие-либо встреченные (например, отсутствие разрешений).

+1

Кронштейны. Скажите CMD, что в вашей команде. '(если существует папка с папкой rmdir) & (папка mkdir)' это я думаю. –

+2

'rmdir folder & mkdir folder 'вам не нужно тестировать (который использует заряд батареи для дополнительного доступа к диску и работает медленно) Я предполагаю, что папка пуста или синтаксис rmdir неверен, см.' Rmdir /? 'Если папка в непустой вы используете папку 'rd/s/q' –

+0

Оба решения работали как очарование! Даже когда папка на самом деле символическая;) Пожалуйста, поверните это в ответ, чтобы я мог ее принять, а также объясните, почему один и тот же 'и' и не удваивать один из рассматриваемого кода (для полноты) –

ответ

1

Поскольку вы используете 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