Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 05.09.2007, 11:47   [включить плавающее окно]   #1
PupsIC
Мужской Новенький
Автор темы
 
Регистрация: 05.09.2007
Сложность с написанием батника....

По роду деятельности приходится постоянно копировать с CD файлы *.rar на жёсткий диск в одну и ту же папку.
Сложность в том, что на CD постоянно меняется имя папки (в формате ММ.ДД-ДД), а именно:
E:\t3000\08.27-02\*.rar
E:\t3000\08.20-26\*.rar
E:\t3000\08.13-19\*.rar и т.д и т.п.
Можно ли это как-то преодолеть, ибо батник значительно облегчил бы жизнь......
Был бы рад конкретному решению, если это в принципе возможно......
PupsIC вне форума  
Ответить с цитированием
Непрочитано 05.09.2007, 12:55   [включить плавающее окно]   #2
Jabberwocky
Мужской Умудрённый
 
Аватар для Jabberwocky
 
Регистрация: 14.12.2003
Адрес: Москва
Не очень понятно. Эти адреса с одного или с разных CD?
Если с одного, то могу предложить такую простую манипуляцию:

cd E:\t3000\08.*
copy *.rar C:\"Куда надо"
__________________
Никогда не существовало и не будет существовать никаких «прикладных наук», есть лишь приложения наук (весьма полезные!) © Л. Пастер
Jabberwocky вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.09.2007, 16:29   [включить плавающее окно]   #3
PupsIC
Мужской Новенький
Автор темы
 
Регистрация: 05.09.2007
Да, эти каталоги на одном диске.
Но в этом месяце (сентябре) уже будут начинаться с 09, также на одном диске могут быть каталоги августа (08).
Обычно бывает 2-4 каталога. Хочется, чтобы было что-то универсальное, чтобы один раз написать и забыть.
PupsIC вне форума  
Ответить с цитированием
Непрочитано 05.09.2007, 17:18   [включить плавающее окно]   #4
Jabberwocky
Мужской Умудрённый
 
Аватар для Jabberwocky
 
Регистрация: 14.12.2003
Адрес: Москва
Если прежде никто не поможет, я завтра вечерком состряпаю такой батник. Если не забуду...

Jabberwocky добавил :

О! Еще вопрос. Папки ММ.ДД-ДД лежат только в папке E:\t3000, или возможны варианты?
__________________
Никогда не существовало и не будет существовать никаких «прикладных наук», есть лишь приложения наук (весьма полезные!) © Л. Пастер
Jabberwocky вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.09.2007, 17:33   [включить плавающее окно]   #5
Bazel
Мужской Заслуженный
 
Аватар для Bazel
 
Регистрация: 19.04.2004
Адрес: AMD 3DNclan, Москва
C: - жесткий
D: - СД- РОМ
--------------------------------
d:
cd\
xcopy *.rar c:\my_folder.new\ /s
c:
--------------------------------
желательно указывать в конце имени папки назначения знак "\" чтобы xcopy не задавал глупых вопросов про то что это папка или файл.
или тебе надо их кучей в 1-у папку сложить без подпапок ?
Bazel вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 05.09.2007, 18:58   [включить плавающее окно]   #6
PupsIC
Мужской Новенький
Автор темы
 
Регистрация: 05.09.2007
Папки ВСЕГДА лежат ВНУТРИ каталога E:\t3000 ,например:
E:\t3000\08.27-02\*.rar
E:\t3000\09.01-21\*.rar
Все файлы *.rar надо ОДНОЙ кучей сложить РОССЫПЬЮ (без подпапок) в С:\Storage\Archive\*.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
Чувствую, что это можно заставить работать в моём конкретном случае (после доработки). Только как?
PupsIC вне форума  
Ответить с цитированием
Непрочитано 06.09.2007, 18:52   [включить плавающее окно]   #7
PupsIC
Мужской Новенький
Автор темы
 
Регистрация: 05.09.2007
Всё, решена проблема! Окончательный рабочий вариант выглядит так:

for /D %%i in (E:\t3000\*) do copy %%i\*.rar С:\Storage\Archive\


Всем огромное спасибо!!!!!
PupsIC вне форума  
Ответить с цитированием
Непрочитано 17.09.2007, 11:36   [включить плавающее окно]   #8
Sanya
Мужской Опытный
 
Аватар для Sanya
 
Регистрация: 22.03.2003
Адрес: Апатиты
еще есть вариант с использованием xcopy -- с указанием опции обхода подкаталогов
__________________
Лечить и судить умеют и могут все, а вот рассчитать несущую балку?
Sanya вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 28.09.2007, 14:57   [включить плавающее окно]   #9
Malik
Мужской Интересующийся
 
Аватар для Malik
 
Регистрация: 11.01.2007
Как два пальца об асфальт это задачу решить на каком-нибудь объектно ориентированном языке
Malik вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:49. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey