Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перемещение файлов только определенного формата в другую папку (http://forum.oszone.net/showthread.php?t=208538)

RoseBl 08-06-2011 16:54 1690826

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

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

Foreigner 08-06-2011 18:35 1690931

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%

Не проверял. Если возникнут проблемы исправлю

RoseBl 08-06-2011 19:22 1690958

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

megaloman 08-06-2011 19:41 1690966

Все песТни в кучу
Код:

@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 1690968

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

RoseBl 08-06-2011 19:57 1690979

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

Foreigner 08-06-2011 20:11 1690987

RoseBl,
малька запутался. Строчка:
Код:

move %1 "v:\sound\%file%"

Arsenik77 16-07-2011 11:15 1714464

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

megaloman 16-07-2011 15:40 1714597

Код:

@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 1714603

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

dokxpi@vk 27-04-2015 03:54 2501159

Как вариант


Время: 10:15.

Время: 10:15.
© OSzone.net 2001-