Показать полную графическую версию : [решено] копировать с CD файлы *.rar на жёсткий диск в одну и ту же папку (ММ.ДД-ДД)
По роду деятельности приходится постоянно копировать с CD файлы *.rar на жёсткий диск в одну и ту же папку.
Сложность в том, что на CD постоянно меняется имя папки (в формате ММ.ДД-ДД), а именно:
E:\t3000\08.27-02\*.rar
E:\t3000\08.20-26\*.rar
E:\t3000\08.13-19\*.rar и т.д и т.п.
Можно ли это как-то преодолеть, ибо батник значительно облегчил бы жизнь......
Был бы рад конкретному решению, если это в принципе возможно......
можно.. отчего ж нельзя?
Примем константой имя CD - например, Е:
Тогда:
!run.bat
@echo off
cls
set cdd=e:
for /f "usebackq delims==" %%i in (`"dir "%cdd%" /ad /b"`) do call work.bat "%%i"
echo Ok
pause
work.bat
@echo off
set CDD=E:
set BAK_DIR=D:\back\CD
IF EXIST "%cdd%\%1"\*.rar goto work
echo Skipped: %1
goto exit
:work
echo --} Processing folder "%1"
MD %BAK_DIR%\%1
xcopy "%cdd%\%1"\*.rar "%BAK_DIR%\%1"\*.rar /q /h
echo {-- Ready: "%1"
:exit
Общий смысл какой: берется список папок с диска Е:, делается перебор их. В процессе перебора в папке, указанной в переменной BAK_DIR создается папка с тем же именем, что и на диске и копируются все файлы с расширением .rar. Папки, не содержащие в корне ни одного rar-a пропускаются. На экран выводится отчет - какие папки обработаны, какие пропущены и сколько файлов скопировано.
Если изменить команду копирования следующим образом, копироваться будут файлы, находящиеся во вложенных папках (при условии, что в корневой был хоть один rar):
xcopy "%cdd%\%1"\*.exe "%BAK_DIR%\%1"\*.exe /q /h /e
Спасибо за практический совет (редкость в наше время). Обязательно попробую и завтра напишу, что получилось!
Попробовал, батники работают наполовину: ищет только в первых папках, а надо во вложенных.
Посему уточняю:
Папки ВСЕГДА лежат ВНУТРИ каталога E:\t3000 ,например:
E:\t3000\08.27-02\*.rar
E:\t3000\09.01-21\*.rar
Все файлы *.rar надо ОДНОЙ кучей сложить РОССЫПЬЮ (без подпапок) в С:\Storage\Archive\*.rar
Чувствую, что это можно заставить работать в моём конкретном случае (после доработки). Только как?
это можно вообще одной командой:
for /D %i in (E:\t3000\*) do copy %i\*.rar С:\Storage\Archive\
хотя вместо copy лучше использовать xcopy с ключом /D чтобы одни и те же файлы поверх не переписывал
Спасибо Busla !!!! После исправления незначительных ошибок окончательный рабочий вариант выглядит так:
for /D %%i in (E:\t3000\*) do copy %%i\*.rar С:\Storage\Archive\
Всем огромное спасибо!!!!!
(А вообще - так ли надо это автоматизировать? Может быть просто сделать поиск по *.rar и скопировать все файлы толпой?)
PupsIC, ю а велкам. (с) Timsky
После исправления незначительных ошибок »
это не незначительная ошибка, а немножко разный синтаксис для непосредственного запуска из командной строки и командного файла - чтобы параметры файла не путались с параметром for.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.