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

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

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

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


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

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


Добрый вечер. Помогите пожалуйста. Нужен bat-ник, который будет перемещать файлы (допустим mp3) из одной папки в другую.
Ну н-р, у меня есть папка V:\hlam в ней много каталогов, и в каждом из них есть обязательно mp3. И чтобы батник выбрал только mp3 и перенес мне их в другую папку V:\Sound. И если можно, чтобы вывел в лог перемещенные файлы. (имена)
Спасибо.
***

Из всех тут скриптов перемещения помог только один, но перемещал по 3-4 файла. А потом и вовсе перестал.

Отправлено: 16:54, 08-06-2011

 

Ветеран


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

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


RoseBl,
С сохранением структуры каталогов или без? Вариант с перемещением всех mp3 в конечную папку ( в одну кучу ), с проверкой на наличие файла с таким же именем. И с логом:
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in (' dir /b /s /a "v:\hlam\*.mp3" ') do call:move "%%i"
goto:eof

:move
set "file=%~nx1"

:check
if exist "v:\sound\%file%" (
  
    set "file=0%file%"
    goto:check

)

move %1 "v:\sound\%file%"
1>>result.log echo moved %~1 to v:\sound\%file%
Не проверял. Если возникнут проблемы исправлю

Последний раз редактировалось Foreigner, 08-06-2011 в 20:37.

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

Отправлено: 18:35, 08-06-2011 | #2



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

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


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


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

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


Foreigner, спасибо, мне лучше чтобы все песни в кучу. Попробовал, перенес 1 песню из 20 и все, повторные запуски, не помогают.

Отправлено: 19:22, 08-06-2011 | #3


Ветеран


Contributor


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

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


Все песТни в кучу
Код: Выделить весь код
@Echo Off

Set Otkuda=V:\hlam
Set Kuda=V:\Sound
Set Ext=mp3

Set LogFile="%Kuda%\+++%Ext%.Log"

Echo +++ >>%LogFile%
Echo +++++++++++++++++++++++++++++++++++++++ %Date%    %Time% >>%LogFile%
Echo +++ >>%LogFile%

FOR /R "%Otkuda%" %%i IN (*.%Ext%) DO Call :Moving "%%i" 
GoTo :Eof

:Moving
if Not Exist %1 GoTo :Eof
move /Y "%~dp1*.%ext%" "%Kuda%\" >>%LogFile%
С сохранением путей процедура :Moving вместо приведенной выше должна иметь вид
Код: Выделить весь код
:Moving
if Not Exist %1 GoTo :Eof

md "%Kuda%%~p1"
move /Y "%~dp1*.%ext%" "%Kuda%%~p1" >>%LogFile%
Если в путях Otkuda Kuda присутствуют русские буквы - батник набирайте в 866 (Dos) кодировке.
Лог-файл создаётся в папке, куда копируете. Естественно, Вы можете переделать как Вам нравится

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

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

Отправлено: 19:41, 08-06-2011 | #4


Ветеран


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

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


RoseBl,
Исправил, посмотри после :check в моем примере.

Отправлено: 19:42, 08-06-2011 | #5


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


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

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


Foreigner, попробовал тоже не захотел. Все также. Блин странно.
megaloman, Ваш помог сразу.
Подскажите пожалуйста, почему один работает, а другой (грубо говоря) нет?

Отправлено: 19:57, 08-06-2011 | #6


Ветеран


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

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


RoseBl,
малька запутался. Строчка:
Код: Выделить весь код
move %1 "v:\sound\%file%"

Отправлено: 20:11, 08-06-2011 | #7


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


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

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


Переделайте пожалуйста bat-к, чтоб перемещали ВСЕ файлы и папки (с сохранением путей) из одной папки, в другую папку.

Отправлено: 11:15, 16-07-2011 | #8


Ветеран


Contributor


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

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


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

Set Otkuda=V:\hlam
Set Kuda=V:\Sound

Move /Y "%Otkuda%\*.*" "%Kuda%\" >nul 1>nul 2>nul
FOR /D %%d IN ("%Otkuda%\*.*") DO Move /Y "%%d" "%Kuda%\" >nul 1>nul 2>nul

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


Отправлено: 15:40, 16-07-2011 | #9


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


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

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


megaloman, не работает, сначала надо создать папки чтоб туда переместить файлы (имя папок разное).

Отправлено: 16:04, 16-07-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Перемещение файлов в только, что созданную папку из контекстного меню. OSArev Скриптовые языки администрирования Windows 15 09-06-2024 00:02
C/C++ - Процедура для занесения имен файлов определенного формата в матрицу символов Kon5tantin Программирование и базы данных 0 15-01-2011 21:31
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку zavoruev Скриптовые языки администрирования Windows 22 28-05-2010 14:04
VBS/WSH/JS - перенос НЕ открытых документов в другую папку SaTaNick Скриптовые языки администрирования Windows 5 10-12-2009 15:15
[решено] Удаление всех файлов определенного формата Grub Хочу все знать 4 24-03-2006 12:27




 
Переход