Показать полную графическую версию : [решено] Удалить несколько каталогов одной командой, не используя bat-ник
Как одной командой удалить несколько каталогов (как пустых, так и с файлами и подкаталогами), не используя bat-файл?
Nun-Nun, одной — никак. Но Вас, полагаю, интересует не «одной командой», а «одной строкой» — по аналогии с этим (http://forum.oszone.net/post-2789524.html#post2789524)? Если так, то опишите условия исполнения — где и как именно Вы хотите сие использовать.
Общий принцип:
for %i in ("FullPath1" "FullPath2" … "FullPathN") do @if exist "%~i\." rd "%~i"
Nun-Nun, одной — никак. Но Вас, полагаю, интересует не «одной командой», а «одной строкой» — по аналогии с этим? Если так, то опишите условия исполнения — где и как именно Вы хотите сие использовать. »
Да, таким же образом как и в той теме - запускать из автозагрузки в Run. И есть соблазн добавить это к уже имеющейся команде:
%comspec% /c start /min %comspec% /c ping -n 15 127.0.0.1 ^& del C:\Temp\amt3.log C:\Temp\swtag.log C:\Temp\Twain.log C:\Temp\Twain001.Mtx C:\Temp\Twunk001.MTX C:\Temp\Twunk002.MTX
P.S. Каталоги могут быть непустыми, поэтому RD придётся запускать с ключами /s/q
P.P.S. Пробовал вот такое, но оно не работает: RD /s/q Папка1 & RD /s/q Папка2
P.S. Каталоги могут быть непустыми, поэтому RD придётся запускать с ключами /s/q »
Это да.
Да, таким же образом как и в той теме - запускать из автозагрузки в Run. И есть соблазн добавить это к уже имеющейся команде: »
Nun-Nun, есть соблазн таки создать один пакетный файл и не мучиться с двойным %comspec%, компоновкой команд, пробельными символами, экранированием кавычек и т.п.
А могли бы пояснить, почему не работает конструкция типа:
RD /s/q Папка1 & RD /s/q Папка2 »
Работает:
https://i.imgur.com/wVjLUMh.png
Названия каталогов Папка1 и Папка2 не содержат пробельных символов? Каталоги Папка1 и Папка2 расположены в текущем каталоге для исполняющего данную команду процесса cmd.exe?
Каталоги Папка1 и Папка2 не содержат пробельных символов? Каталоги Папка1 и Папка2 расположены в текущем каталоге для исполняющего данную команду процесса cmd.exe? »
Пробелов нет.
Папка 1 - это: C:\Temp\88
Папка 2 - это: C:\Temp\99
Есть одна странность. Даже при попытке удаления только одной папки команда RD почему-то никак не хочет работать с ключами /S и /Q , без этих ключей работает нормально. :(
Nun-Nun, где именно не работает Ваша конструкция — в ярлыке? А в «ручками» запущенном cmd.exe? Есть ли права на удаление самого указанного каталога и вложенных в него каталогов и файлов? Нет ли в момент удаления открытых каким-либо приложением файлов, находящихся в нём или в одном из вложенных каталогов?
P.S. У меня есть подозрение, что каталоги зовутся не C:\Temp\88 и C:\Temp\99, а как-то по-другому.
Iska,
Выяснилось вот что: из реестра конструкция RD /s/q Папка1 & RD /s/q Папка2 срабатывает нормально, а когда запускаю её из-под TC - не работает. Добавление команд & , /s и /q делают RD неработоспособной.
P.S. У меня есть подозрение, что каталоги зовутся не C:\Temp\88 и C:\Temp\99, а как-то по-другому. »
Как ни странно, именно так они и называются (созданы на период эксперимента).
Nun-Nun, это из-за того, что в Total Commander'е используется внутренняя реализация ряда команд интерпретатора команд:
Command line: keys
If Total Commander is active, nearly all keyboard input is directed to the command line.
Here is the layout for some keys:
ENTER The command line is executed, if it contains at least one character (otherwise, the program under the cursor in the source window is started). If the command is cd, md or rd, it is executed internally. If it is an internal DOS command, DOS will be executed with this command. Otherwise, a program with the given name is executed.
…
Вкупе со слабым интеллектом парсера его командной строки это приводит к тем последствиям, каковые Вы наблюдаете. Вот, например, соответствующая тема на русскоязычном ресурсе: Проблема с пониманием особенностей командной строки :: Total Commander (http://wincmd.ru/forum/viewtopic.php?t=15404).
В Far Manager'е так же наличествует внутренняя реализация ряда команд интерпретатора команд, но, поскольку его парсер намного умнее, то он не страдает чрезмерным апломбом и, видя наличие & и параметров у команд rd, молча передает введённую строку на исполнение внешнему %comspec% (который не надо отдельно указывать в командной строке). Могу повторить скриншот :):
https://i.imgur.com/wVjLUMh.png
megaloman
14-01-2018, 22:13
Nun-Nun, Iska, А если так CMD /A /C (Rd /Q /S "Z:\Tra La La") & (Rd /Q /S "Z:\Tru La La")
Iska, А если так
CMD /A /C (Rd /Q /S "Z:\Tra La La") & (Rd /Q /S "Z:\Tru La La") »
Да, так работает!!!
P.S. Благодарю за помощь! Теперь причина проблемы понятна, решение найдено! Тему, наверное можно закрывать.
Nun-Nun, Iska, А если так »
Для Total Commander? Ну, да — там именно %comspec% /c и надо принудительно указывать для неисполнения cd/md/rd самим Total Commander'ом.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.