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

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

skyskiff 08-09-2015 13:24 2550890

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

Elven 08-09-2015 13:46 2550902

а как определить где закончился код и началось название? чем коды отделены от названия, или они имеют одинаковое количество символов?

skyskiff 08-09-2015 14:08 2550910

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

skyskiff 08-09-2015 15:07 2550939

Файлы для переноса в одной папке. Все папки в одной общей папке. Совпадает только код, текст в названии не совпадает. Все файлы pdf.

megaloman 08-09-2015 15:39 2550959

Код:

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

Большое спасибо, ещё не пробовал, много работы. Очень благодарен.

alpap 20-09-2015 20:34 2555600

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 2555643

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

.

Цитата:

Цитата skyskiff
текст в названии не совпадает »

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

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


Время: 13:00.

Время: 13:00.
© OSzone.net 2001-