PDA

Показать полную графическую версию : Копирование файлов в папки по маске файла и маске папки (BAT)


skyskiff
08-09-2015, 13:24
Добрый день!
Товарищи, помогите. Возникла надобность раскладывать файлы по маске папки и маске файла. То есть, расскажу детальней, есть файлы в названии которых есть некий код, пример: "123456 (Тут текст).pdf" и есть структура папок, где каждая папка в начале имеет наименования код и далее текст, пример: "123456 (Тут текст)". Так вот, требуется разложить файлы по этому коду, то есть файл "123456 (Тут текст).pdf" в папку "123456 (Тут текст)" по коду "123456" Возможно ли как-то это организовать в BAT.

Elven
08-09-2015, 13:46
а как определить где закончился код и началось название? чем коды отделены от названия, или они имеют одинаковое количество символов?

skyskiff
08-09-2015, 14:08
Код заканчивается пробелом как в файле так и в названии папки. Количество символов не одинаковое. Есть коды которые начинаются с нулей, пример: 0001234 (тут текст).

skyskiff
08-09-2015, 15:07
Файлы для переноса в одной папке. Все папки в одной общей папке. Совпадает только код, текст в названии не совпадает. Все файлы pdf.

megaloman
08-09-2015, 15:39
@Echo Off
Set "WhereF=D:\Файлы"
Set "WhereD=D:\Папки"

FOR /F "usebackq tokens=1,* delims= " %%i IN (`Dir "%WhereF%\* *.pdf" /B /A:-D`) DO (
FOR /D %%d IN ("%WhereD%\%%i *") DO (
If Exist "%WhereF%\%%i *%%~xj" Move /Y "%WhereF%\%%i *%%~xj" "%%d\"
)
)

skyskiff
09-09-2015, 07:48
Большое спасибо, ещё не пробовал, много работы. Очень благодарен.

alpap
20-09-2015, 20:34
skyskiff, попробуйте так:
@echo off
SetLocal EnableExtensions
set "cod=123456"
set "in=%Userprofile%\Desktop\proba"
for /d %%i in ("%in%") do for /f "tokens=1 delims=%cod%" %%j in ('dir /ad /b "%%~i"') do set "papka=%%j"& call :kopir "%%j"
goto :eof
:kopir
for /f "tokens=1 delims=%cod%" %%k in ('dir /a-d /b "%in%"') do set "file=%%k"& goto ext
:ext
copy "%in%\%cod%%file%.pdf" "%in%\%cod%%papka%\"
exit /b.

alpap
20-09-2015, 22:41
skyskiff, Извиняюсь не проверил, правильно так:
@echo off
SetLocal EnableExtensions
set "cod=123456"
set "in=%Userprofile%\Desktop\proba"
for /d %%i in ("%in%") do for /f "tokens=1 delims=%cod%" %%j in ('dir /ad /b "%%~i"') do set "papka=%%j"& call :kopir "%%j"
goto :eof
:kopir
for /f "tokens=1 delims=%cod%" %%k in ('dir /a-d /b "%in%\*.pdf"') do set "file=%%k"& goto ext
:ext
copy "%in%\%cod%%file%" "%in%\%cod%%papka%\"
exit /b.

текст в названии не совпадает » - должен совпадать иначе что куда?

Имел ввиду текст файла и папки совпадает?




© OSzone.net 2001-2012