Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить несколько каталогов одной командой, не используя bat-ник

Ответить
Настройки темы
CMD/BAT - [решено] Удалить несколько каталогов одной командой, не используя bat-ник

Аватара для Nun-Nun

Ветеран


Сообщения: 2158
Благодарности: 294


Конфигурация

Профиль | Отправить PM | Цитировать


Как одной командой удалить несколько каталогов (как пустых, так и с файлами и подкаталогами), не используя bat-файл?

-------
Свобода не означает вседозволенность.


Отправлено: 20:37, 14-01-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Nun-Nun, одной — никак. Но Вас, полагаю, интересует не «одной командой», а «одной строкой» — по аналогии с этим? Если так, то опишите условия исполнения — где и как именно Вы хотите сие использовать.

Общий принцип:
Код: Выделить весь код
for %i in ("FullPath1" "FullPath2" … "FullPathN") do @if exist "%~i\." rd "%~i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:44, 14-01-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Nun-Nun

Ветеран


Сообщения: 2158
Благодарности: 294

Профиль | Отправить PM | Цитировать


Цитата Iska:
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

-------
Свобода не означает вседозволенность.


Последний раз редактировалось Nun-Nun, 14-01-2018 в 21:16.


Отправлено: 21:05, 14-01-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Nun-Nun:
P.S. Каталоги могут быть непустыми, поэтому RD придётся запускать с ключами /s/q »
Это да.

Цитата Nun-Nun:
Да, таким же образом как и в той теме - запускать из автозагрузки в Run. И есть соблазн добавить это к уже имеющейся команде: »
Nun-Nun, есть соблазн таки создать один пакетный файл и не мучиться с двойным %comspec%, компоновкой команд, пробельными символами, экранированием кавычек и т.п.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:13, 14-01-2018 | #4


Аватара для Nun-Nun

Ветеран


Сообщения: 2158
Благодарности: 294

Профиль | Отправить PM | Цитировать


А могли бы пояснить, почему не работает конструкция типа:
Цитата Nun-Nun:
RD /s/q Папка1 & RD /s/q Папка2 »

-------
Свобода не означает вседозволенность.


Отправлено: 21:14, 14-01-2018 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Работает:



Названия каталогов Папка1 и Папка2 не содержат пробельных символов? Каталоги Папка1 и Папка2 расположены в текущем каталоге для исполняющего данную команду процесса cmd.exe?
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:38, 14-01-2018 | #6


Аватара для Nun-Nun

Ветеран


Сообщения: 2158
Благодарности: 294

Профиль | Отправить PM | Цитировать


Цитата Iska:
Каталоги Папка1 и Папка2 не содержат пробельных символов? Каталоги Папка1 и Папка2 расположены в текущем каталоге для исполняющего данную команду процесса cmd.exe? »
Пробелов нет.

Папка 1 - это: C:\Temp\88
Папка 2 - это: C:\Temp\99

Есть одна странность. Даже при попытке удаления только одной папки команда RD почему-то никак не хочет работать с ключами /S и /Q , без этих ключей работает нормально.

-------
Свобода не означает вседозволенность.


Отправлено: 21:45, 14-01-2018 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Nun-Nun, где именно не работает Ваша конструкция — в ярлыке? А в «ручками» запущенном cmd.exe? Есть ли права на удаление самого указанного каталога и вложенных в него каталогов и файлов? Нет ли в момент удаления открытых каким-либо приложением файлов, находящихся в нём или в одном из вложенных каталогов?

P.S. У меня есть подозрение, что каталоги зовутся не C:\Temp\88 и C:\Temp\99, а как-то по-другому.

Отправлено: 21:52, 14-01-2018 | #8


Аватара для Nun-Nun

Ветеран


Сообщения: 2158
Благодарности: 294

Профиль | Отправить PM | Цитировать


Iska,

Выяснилось вот что: из реестра конструкция RD /s/q Папка1 & RD /s/q Папка2 срабатывает нормально, а когда запускаю её из-под TC - не работает. Добавление команд & , /s и /q делают RD неработоспособной.
Цитата Iska:
P.S. У меня есть подозрение, что каталоги зовутся не C:\Temp\88 и C:\Temp\99, а как-то по-другому. »
Как ни странно, именно так они и называются (созданы на период эксперимента).

-------
Свобода не означает вседозволенность.


Отправлено: 21:54, 14-01-2018 | #9


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Nun-Nun, это из-за того, что в Total Commander'е используется внутренняя реализация ряда команд интерпретатора команд:
Цитата TOTALCMD.CHM:
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.

В Far Manager'е так же наличествует внутренняя реализация ряда команд интерпретатора команд, но, поскольку его парсер намного умнее, то он не страдает чрезмерным апломбом и, видя наличие & и параметров у команд rd, молча передает введённую строку на исполнение внешнему %comspec% (который не надо отдельно указывать в командной строке). Могу повторить скриншот :

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 14-01-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить несколько каталогов одной командой, не используя bat-ник

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Bat-ник создания текстовика hancogruss Скриптовые языки администрирования Windows 6 19-09-2016 01:19
CMD/BAT - Bat'ник, который создает bat'ник и RDP ivanxam Скриптовые языки администрирования Windows 1 22-01-2016 14:10
Разное - [решено] Переделайте c++ в bat-ник VokaMut Программирование и базы данных 5 10-08-2011 18:08
bat'ник mikola1983 Хочу все знать 10 03-08-2007 10:46
отключение всех активных сессий одной командой XPurple Microsoft Windows NT/2000/2003 4 29-11-2005 15:03




 
Переход