PDA

Показать полную графическую версию : [решено] Конвертирование файлов с сохранением структуры каталогов


Sarge81
16-09-2010, 08:15
Итак, дано:
1) Программа-конвертер с синтаксисом (упрощенно):
converter input_file output_file
2) Структура папок с входными файлами (может быть произвольной), например:
C:\in\file1.ext1
C:\in\DIR1\file2.ext1
C:\in\DIR1\DIR2\file3.ext1
C:\in\DIR3\file4.ext1
C:\in\DIR3\file5.ext1

Требуется - конвертировать файлы в другой формат и положить их, например, в папку D:\out с сохранением структуры каталогов, т.е.:
D:\out\file1.ext2
D:\out\DIR1\file2.ext2
D:\out\DIR1\DIR2\file3.ext2
D:\out\DIR3\file4.ext2
D:\out\DIR3\file5.ext2

Все на что хватило знаний (ну не силен я в командных файлах :():
for /r c:\in\ %%i in (*.ext1) do (if not exist d:\out%%~pi md d:\out%%~pi & C:\converter %%i d:\out%%~pi\%%~ni.ext2)
В результате получается:
D:\out\in\file1.ext2
D:\out\in\\DIR1\file2.ext2
D:\out\in\DIR1\DIR2\file3.ext2
D:\out\in\DIR3\file4.ext2
D:\out\in\DIR3\file5.ext2

Если бы были команды поиска подстроки в строке, задача решилась бы элементарно... а так даже не знаю с какой стороны подойти. Помогите, пожалуйста, с написанием нужного скрипта. :mellow:

amel27
16-09-2010, 09:12
@echo off

set dri=c:\in
set dro=d:\out
set ex1=ext1
set ex2=ext2

xcopy "%dri%\*" "%dro%\" /T
for /r "%dri%" %%i in (*.%ex1%) do (
set "out_p=%%~dpni"
call set "out_p=%%out_p:%dri%=%dro%%%"
call converter "%%i" "%%out_p%%.%ex2%"
)

Sarge81
17-09-2010, 06:55
amel27, спасибо, выручили! :) Правда так и не въехал что делает команда
call set "out_p=%%out_p:%dri%=%dro%%%"
Точнее понятно какое в результате присваивается значение переменной out_p, но вот как оно работает (виндовский хэлп ответа на э
тот вопрос не дает)? :o

amel27
17-09-2010, 07:12
не въехал что делает команда »
то же самое, но по справке:
@echo off
setlocal enabledelayedexpansion

set dri=c:\in
set dro=d:\out
set ex1=ext1
set ex2=ext2

xcopy "%dri%\*" "%dro%\" /T
for /r "%dri%" %%i in (*.%ex1%) do (
set "out_p=%%~dpni"
set "out_p=!out_p:%dri%=%dro%!"
converter "%%i" "!out_p!.%ex2%"
)




© OSzone.net 2001-2012