Показать полную графическую версию : [решено] Перемещение файлов только определенного формата в другую папку
Добрый вечер. Помогите пожалуйста. Нужен bat-ник, который будет перемещать файлы (допустим mp3) из одной папки в другую.
Ну н-р, у меня есть папка V:\hlam в ней много каталогов, и в каждом из них есть обязательно mp3. И чтобы батник выбрал только mp3 и перенес мне их в другую папку V:\Sound. И если можно, чтобы вывел в лог перемещенные файлы. (имена)
Спасибо.
***
Из всех тут скриптов перемещения помог только один, но перемещал по 3-4 файла. А потом и вовсе перестал.
Foreigner
08-06-2011, 18:35
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, спасибо, мне лучше чтобы все песни в кучу. Попробовал, перенес 1 песню из 20 и все, повторные запуски, не помогают.
megaloman
08-06-2011, 19:41
Все песТни в кучу@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) кодировке.
Лог-файл создаётся в папке, куда копируете. Естественно, Вы можете переделать как Вам нравится
Foreigner
08-06-2011, 19:42
RoseBl,
Исправил, посмотри после :check в моем примере.
Foreigner, попробовал тоже не захотел. Все также. Блин странно.
megaloman, Ваш помог сразу.
Подскажите пожалуйста, почему один работает, а другой (грубо говоря) нет?
Foreigner
08-06-2011, 20:11
RoseBl,
малька запутался. Строчка:
move %1 "v:\sound\%file%"
Arsenik77
16-07-2011, 11:15
Переделайте пожалуйста bat-к, чтоб перемещали ВСЕ файлы и папки (с сохранением путей) из одной папки, в другую папку.
megaloman
16-07-2011, 15:40
@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
Arsenik77
16-07-2011, 16:04
megaloman, не работает, сначала надо создать папки чтоб туда переместить файлы (имя папок разное).
dokxpi@vk
27-04-2015, 03:54
Как вариант (http://goo.gl/Ndbz9R)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.