|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение (удаление) директорий по маске |
|
|
CMD/BAT - [решено] Перемещение (удаление) директорий по маске
|
Пользователь Сообщения: 76 |
Профиль | Отправить PM | Цитировать Mast need скрипт каторый бы перемещал или удалял директории по маске. В моем случае по такой ( ~* ), можно просто принцип хотябы (IMHO длинный батник получится). Заранее спасибо.
|
|
Отправлено: 11:57, 19-01-2008 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Например, так:
не самое изящное решение - сбрасывает во временный файл список всех подкаталогов, но как-то невнятно findstr с консолью работает |
Отправлено: 18:31, 19-01-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 4527
|
Профиль | Сайт | Отправить PM | Цитировать Busla, не могли бы вы указать чайнику, где конкретно в вашем тексте маска удаляемых папок? Я понял, что она в кавычках:
.*\\~[^\\]*\\\. Это верно? |
Отправлено: 03:18, 21-01-2008 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать файл: my search template.js
// где искать var dir = "c:\\windows\\"; // что искать (все папки, которые заканчиваются на 32) var regex = new RegExp(".*32", "i"); function deal_with_dir(dir1) { // чё с ними делать WScript.Echo('deleted: ' + dir1); } // основной цикл var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); for ( var datas=new Enumerator(fileSystem.GetFolder(dir).SubFolders); !datas.atEnd(); datas.moveNext()) { if ( regex.test(datas.item().Name) ) deal_with_dir(datas.item().Name); } |
Отправлено: 08:23, 21-01-2008 | #4 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 12:53, 21-01-2008 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать 2 truvo: да, findstr понимает регулярные выражения:
.* - любой символ любое кол-во раз (начало пути может быть любым, если его необходимо ограничить какой-то подпапкой - это делается в первом for) \\ - косая черта - зарезервированный символ, поэтому его необходимо указывать дважды ~ - собственно, тильда, с которой должно начинаться имя папки [^\\]* - любой символ, кроме косой черты произвольное кол-во раз \\ - уже было \. - точка - тоже зарезервированный символ, поэтому необходимо "экранировать" знаком "\" (for возвращает имена с точками на конце) Про регулярные выражения много материалов в инете - вещь полезная, правда, надо немного попрактиковаться - сразу по доке обычно сложно составить правильное выражение. 2 pva: Ну и зачем это было писать?! Во-первых: оно ищет совсем другие папки! (а не те, что заканчиваются на 32) Во-вторых: без ряда изменений оно не адаптируется к поставленной задаче Во-третьих: про WSH не спрашивали - в WinPE, например, он не работает |
Последний раз редактировалось Busla, 21-01-2008 в 13:48. Причина: уточнил про папки Отправлено: 13:45, 21-01-2008 | #6 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Busla,
1. Цитата Busla:
2. Цитата Busla:
Цитата ven00m:
3. Цитата Busla:
По-моему последний пример ven00m вполне подходит. кратко и ёмко. |
||||
Отправлено: 14:36, 31-01-2008 | #7 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать ven00m конечно же виднее, что ему надо... Я ориентировался на первоначальную формулировку - заголовок в категории "CMD/BAT".
Ваш скрипт ищет папки в имени которых встречается 32. А в функцию-обработчик передаёт не полный путь, а только название папки. Поэтому и счёл необходимым предупредить, что в некоторых случаях он может грохнуть совсем не те папки, который задумывались. Честно говоря, в голову не приходило, что ven00m требуется такая простая вещь - это разжёвано в справке к for: |
Отправлено: 17:34, 31-01-2008 | #8 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать А если надо удалять только директории, например, с названием OldVersions (со всеми файлами в ней содержащимися) из всех подкаталогов текущего каталога(и возможно из подкаталогов каталогов), то это возможно сделать как cmd-скрипт, без применения языков программирования?
|
Отправлено: 14:20, 15-02-2009 | #9 |
Сообщения: 53456
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:04, 15-02-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске | VitHAK | Скриптовые языки администрирования Windows | 14 | 23-12-2013 08:57 | |
CMD/BAT - Удаление скрытых папок по маске | chatlaninsan | Скриптовые языки администрирования Windows | 5 | 07-09-2009 17:22 | |
2008 - Не хватает прав на удаление\перемещение контейнера в AD | diga | Windows Server 2008/2008 R2 | 2 | 10-04-2009 14:14 | |
Любой язык - [решено] удаление файлов по маске, созданных за прошлые сутки | BRAT2 | Скриптовые языки администрирования Windows | 1 | 06-04-2009 08:51 | |
[решено] Автоматическое удаление файлов из директорий | BigMac | Microsoft Windows NT/2000/2003 | 19 | 29-05-2005 22:32 |
|