Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске

Аватара для VitHAK

Пользователь


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

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


Привет всем!

Такая задача:

Цитата:
Есть каталог D:\Program. В нём есть другие каталоги. В этих каталогов разные имена, все эти имена на русском.

Нужно:

1. Проверить D:\Program\<все каталоги>\ на присутствие каталога images. Еслы он есть тогда нужно переместить все *.jpg c D:\Program\<все каталоги>\images в D:\images.
2. Проверить D:\Program\<все каталоги>\ на присутствие каталогов по маске data*. Еслы они есть тогда нужно удалить все эти каталоги.
3. Проверить D:\Program\<все каталоги>\ на присутствие файлов *.log , *.bak , *.tmp. Еслы они есть тогда нужно удалить все эти файлы.
P.S. Возможно ли такое сделать с каталогами на русском языке?

Отправлено: 22:20, 27-07-2009

 

Аватара для pegasus

Новый участник


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

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


Большое спасибо! После некоторых модификаций заработало!

Отправлено: 13:46, 28-06-2010 | #11



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

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


Новый участник


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

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


Всем доброго времени суток. Прошу прощения за некропостинг, но эта тема наиболее подходит под мою задачу.
Задача проще, чем у топикстартера: существует каталог, в котором много под-каталогов. Нужно отыскать все файлы *.mp3 в этих подкаталогах и скопировать их в другой каталог.
Попытался самостоятельно переделать вышерасположенные решения:

Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set SrcDir=D:\games\other\osu!\Songs
For /F "Delims=" %%I In ('Dir "%SrcDir%\*" /AD /B /S') Do (
  If "%%~xI"=="" (
    If Exist "%%~I\*.mp3" (
      If Not Exist D:\mp3 MD D:\mp3
      Move "%%~I\*.mp3" D:\mp3\
    )
  )
)
Однако данный вариант не даёт результата. Что я делаю не так?

Отправлено: 16:32, 06-01-2012 | #12


Ветеран


Contributor


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

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


Exerion, Для начала, формат команды For неверен - кавычки неправильные. Сделайте For /? >C:\_For_Help.txt В файле посмотрИте, какие нужны. Дальше копать поленился.
По Вашему коду видно, что Вы хотите не скопировать (Copy) файлы, а переместить их (Move). Вот вариант решения (при совпадении имени файл перемещен не будет, батник выдаст ошибку)
Код: Выделить весь код
@Echo Off

Set From=E:\Над крылечком
Set To=E:\Дым колечком
Set Mask=*.mp3

Md "%To%" >Nul 1>Nul 2>Nul

For /F "usebackq delims=" %%f In (`Dir "%From%\%Mask%" /A:-D /B /S`) Do Move "%%f" "%To%\"
Вот еще вариант, при большом кол-ве файлов внутри директорий он будет работать быстрее, за счёт того, что групповые операции выполняются быстрее. Опять же, дубликаты по именам перемещены не будут
Код: Выделить весь код
@Echo Off

Set From=E:\Над крылечком
Set To=E:\Дым колечком
Set Mask=*.mp3

Md "%To%" >Nul 1>Nul 2>Nul

Move "%From%\%Mask%" "%To%\" >nul 1>Nul 2>Nul
For /F "usebackq delims=" %%f In (`Dir "%From%" /A:D /B /S`) Do Move "%%f\%Mask%" "%To%\"  >nul 1>Nul 2>Nul

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-01-2012 в 19:49. Причина: Дополнил ответ

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

Отправлено: 19:19, 06-01-2012 | #13


Новый участник


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

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


Помогите сделать, чтобы батник перемещал файлы, которые в нем прописаны, но раскиданы они по разным папкам в одну

Отправлено: 07:11, 23-12-2013 | #14


Ветеран


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

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


kolik76, теперь переведите на русский.

Отправлено: 08:57, 23-12-2013 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов по маске за вчерашний день dvassilyev Скриптовые языки администрирования Windows 8 19-10-2011 19:36
CMD/BAT - [решено] Перемещение (удаление) директорий по маске ven00m Скриптовые языки администрирования Windows 17 15-11-2009 10:24
[решено] Перемещение Log-файлов в Windows Server 2003 FATruden Microsoft Windows NT/2000/2003 2 01-10-2009 12:12
CMD/BAT - Удаление скрытых папок по маске chatlaninsan Скриптовые языки администрирования Windows 5 07-09-2009 17:22
Любой язык - [решено] удаление файлов по маске, созданных за прошлые сутки BRAT2 Скриптовые языки администрирования Windows 1 06-04-2009 08:51




 
Переход