Перемещение (удаление) директорий по маске
Mast need скрипт каторый бы перемещал или удалял директории по маске. В моем случае по такой ( ~* ), можно просто принцип хотябы (IMHO длинный батник получится). Заранее спасибо.
|
Например, так:
Код:
@echo off |
Busla, не могли бы вы указать чайнику, где конкретно в вашем тексте маска удаляемых папок? Я понял, что она в кавычках:
.*\\~[^\\]*\\\. Это верно? |
файл: my search template.js
Код:
// где искать |
Гыыы, как все сложно. Я по проше способ нашел:
текст файла del.vbs Код:
Set FSO = CreateObject("Scripting.FileSystemObject") |
2 truvo: да, findstr понимает регулярные выражения:
.* - любой символ любое кол-во раз (начало пути может быть любым, если его необходимо ограничить какой-то подпапкой - это делается в первом for) \\ - косая черта - зарезервированный символ, поэтому его необходимо указывать дважды ~ - собственно, тильда, с которой должно начинаться имя папки [^\\]* - любой символ, кроме косой черты произвольное кол-во раз \\ - уже было \. - точка - тоже зарезервированный символ, поэтому необходимо "экранировать" знаком "\" (for возвращает имена с точками на конце) Про регулярные выражения много материалов в инете - вещь полезная, правда, надо немного попрактиковаться - сразу по доке обычно сложно составить правильное выражение. 2 pva: Ну и зачем это было писать?! Во-первых: оно ищет совсем другие папки! (а не те, что заканчиваются на 32) Во-вторых: без ряда изменений оно не адаптируется к поставленной задаче Во-третьих: про WSH не спрашивали - в WinPE, например, он не работает |
Busla,
1. Цитата:
2. Цитата:
Цитата:
3. Цитата:
По-моему последний пример ven00m вполне подходит. кратко и ёмко. |
ven00m конечно же виднее, что ему надо... Я ориентировался на первоначальную формулировку - заголовок в категории "CMD/BAT".
Ваш скрипт ищет папки в имени которых встречается 32. А в функцию-обработчик передаёт не полный путь, а только название папки. Поэтому и счёл необходимым предупредить, что в некоторых случаях он может грохнуть совсем не те папки, который задумывались. Честно говоря, в голову не приходило, что ven00m требуется такая простая вещь - это разжёвано в справке к for: Код:
for /d %%d in (~*) do rd /s /q %%d |
А если надо удалять только директории, например, с названием OldVersions (со всеми файлами в ней содержащимися) из всех подкаталогов текущего каталога(и возможно из подкаталогов каталогов), то это возможно сделать как cmd-скрипт, без применения языков программирования?
|
pretzel, примерно так:
Код:
For /D /R %%I In (OldVersions*) Do If "%%~nxI"=="OldVersions" RD /S /Q "%%~I" |
Petya V4sechkin, спасибо, попробую.
А если помимо удаления директорий OldVersions надо еще удалять все файлы с расширениями *.bak, *.db, *.cd~, *.lck, это можно сделать одной строкой команды, или только так: del *.bak /s /q del *.db /s /q del *.cd~ /s /q del *.lck /s /q Если да, то как? |
Цитата:
Код:
Del /F /S /Q *.bak *.db *.cd~ *.lck |
Petya V4sechkin, да только дело в том, что после запуска скрипта
Код:
For /D /R %%I In (OldVersions*) Do If "%%~nxI"=="OldVersions" RD /S /Q "%%~I" Код:
D:\Job>Del /F /S /Q *.bak *.db *.cd~ *.lck |
pretzel, для удаления скрытых файлов нужна опция /AH.
Выполните del /? и все поймете. |
Petya V4sechkin, большое Вам спасибо!
|
А как переместить всю папку с ее содержимым, включая подпапки и файлы в другое место? Например, есть папка D:\UPXPRus (в ней содержатся подпапки + файлы), эту папку D:\UPXPRus надо переместить в корень диска E:\, чтобы получилось E:\UPXPRus (в ней содержатся подпапки + файлы). Спасибо.
|
Цитата:
Код:
@Echo Off |
amel27, спасибо. :good:
На основе этого сообщения, привожу два батника ниже. Код ниже: перемещение папки UPXPRus (с подпапками и файлами), находящуюся в корне диска E в папку UPXPRus, которая находится в корне диска D. Код:
@Echo Off Код:
@Echo Off |
Время: 00:08. |
Время: 00:08.
© OSzone.net 2001-