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

Компьютерный форум 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

 


Moderator


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

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


Цитата VitHAK:
Возможно ли такое сделать с каталогами на русском языке?
Без разницы.
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set SrcDir=D:\Program
For /F "Delims=" %%I In ('Dir "%SrcDir%\images.*" /AD /B /S') Do (
  If "%%~xI"=="" (
    If Exist "%%~I\*.jpg" (
      If Not Exist D:\images MD D:\images
      Move "%%~I\*.jpg" D:\images\
    )
  )
)
For /F "Delims=" %%I In ('Dir "%SrcDir%\data*" /AD /B /S') Do (
  RD /S /Q "%%~I"
)
Del /F /S /Q "%SrcDir%\*.log" "%SrcDir%\*.bak" "%SrcDir%\*.tmp"

Отправлено: 11:26, 28-07-2009 | #2



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

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


Аватара для VitHAK

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


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

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


Petya V4sechkin, Спасибо! Все работает!

Отправлено: 11:38, 28-07-2009 | #3


Googler


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

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


Цитата VitHAK:
нужно переместить все *.jpg c D:\Program\<все каталоги>\images в D:\images »
гм... а что делать, если в разных подкаталогах окажутся файлы с одинаковыми именами?.. заменять при переносе?

Цитата VitHAK:
Возможно ли такое сделать с каталогами на русском языке? »
язык не важен, проблемы могут быть со спецсимволами в именах файлов/каталогов типа кавычек и многоточий - встречаются при сохранении интернет-страниц

Petya V4sechkin, без EnableExtensions тоже вроде работает:
Код: Выделить весь код
@Echo off

Set $SRC=D:\Program
Set $DST=D:\Images

For /F "Delims=" %%i In ('DIR /A:D/S/B "%$SRC%\Images"') Do MOVE "%%i\*.jpg" "%$DST%\"
For /F "Delims=" %%i In ('DIR /A:D/S/B "%$SRC%\data*"')  Do RD /S/Q "%%i"
Del /F/S/Q "%$SRC%\*.log" "%$SRC%\*.bak" "%$SRC%\*.tmp"

Отправлено: 12:04, 28-07-2009 | #4



Moderator


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

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


Цитата amel27:
без EnableExtensions тоже вроде работает
Я по привычке (EnableExtensions включен по умолчанию).

Цитата amel27:
For /F "Delims=" %%i In ('DIR /A:D/S/B "%$SRC%\Images"')
Если папка D:\Program\images существует, так не сработает (именно поэтому пришлось добавить * и в цикле анализировать).

Отправлено: 12:09, 28-07-2009 | #5


Googler


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

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


Цитата Petya V4sechkin:
Если папка D:\Program\images существует, так не сработает »
точно! было, чувствую тут где-то подстава, но уже не помню : )

Отправлено: 12:32, 28-07-2009 | #6


Аватара для VitHAK

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


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

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


Цитата amel27:
гм... а что делать, если в разных подкаталогах окажутся файлы с одинаковыми именами?.. заменять при переносе? »
Я не подумал об этом. Проблема в том что у меня в D:\Program\<все каталоги>\images всего один *.jpg. Он у всех каталогах одинаковой logo.jpg.

Лутшим решением этой проблемы было б переименовать logo.jpg в имя каталога в котором images которого найден этот *.jpg

Отправлено: 12:44, 28-07-2009 | #7


Googler


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

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


Цитата VitHAK:
Лутшим решением этой проблемы было б переименовать logo.jpg в имя каталога в котором images »
ну, если имена каталогов уникальны, то где-то так:
Код: Выделить весь код
@Echo off

Set $SRC=D:\Program
Set $DST=D:\Images

For /F "Delims=" %%i In ('DIR /A:D/S/B "%$SRC%\*"') Do If Exist "%%i\Images\logo.jpg" (
   REN "%%i\Images\logo.jpg" "%%~ni.jpg"
   MOVE "%%i\Images\%%~ni.jpg" "%$DST%\"
)

For /F "Delims=" %%i In ('DIR /A:D/S/B "%$SRC%\data*"')  Do RD /S/Q "%%i"
Del /F/S/Q "%$SRC%\*.log" "%$SRC%\*.bak" "%$SRC%\*.tmp"
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:13, 28-07-2009 | #8


Аватара для pegasus

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


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

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


Помогите пожалуйста написать такой bat файл:
Есть путь c:\Documents and Settings\user\Local Settings\Temp\bps\plot\ugt_33_20\ в этом каталоге создаются множество других каталогов содержащих файлы *.hpg нужно собрать эти все файлы и переместить в папу f:\plot

Отправлено: 10:02, 28-06-2010 | #9


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


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

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


pegasus,

Цитата:
Помогите пожалуйста написать такой bat файл: Есть путь c:\Documents and Settings\user\Local Settings\Temp\bps\plot\ugt_33_20\ в этом каталоге создаются множество других каталогов содержащих файлы *.hpg нужно собрать эти все файлы и переместить в папу f:\plot
А чем не устраивает решение предложеное amel27 в post #8, достаточно заменить адреса директорий в переменных $SRC и $DST. Да и посмотреть имеют ли файлы *.hpg уникальные имена, если нет то оставить команду на переименование, а если да - убрать.
Это сообщение посчитали полезным следующие участники:

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



Компьютерный форум 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




 
Переход