PDA

Показать полную графическую версию : Перенос по N фалов в каждую папку созданную из списка.


hruckt
16-02-2016, 11:14
Доброго времени суток.
Прошу помощи.
Есть такая практическая задача. Существует папка A с файлами (jpg). они отсортированы по времени их создания. Есть файл name.txt со списком имен.
Количество файлов в 3 раза больше чем имен.
Необходимо создать папку (первую из списка) и переместить (не копировать) в нее 3 первых файла из папки А, потом создать папку (вторую из списка) и переместить туда следующие 3 файла(хотя на тот момент по идее они уже будут первые).
И так до тех пор, пока не закончатся все файлы (соответственно и названия в списке файла name.txt)

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

Iska
17-02-2016, 05:04
Вопросы:

Файлы сортируем по возрастанию или убыванию даты создания? То есть, какие должны быть у нас в начале — более новые или более старые?
Список имён в файле «name.txt» содержит относительные или абсолютные имена папок?
Если относительные — то относительно чего: текущего каталога или исходного каталога?

Вот болванка:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=C:\Мои проекты\38
set sMask=*.jpg
set sFolderList=C:\Мои проекты\38\name.txt

if exist "%sSourceFolder%\." (
pushd "%sSourceFolder%"

if exist "%sFolderList%" (
for /f "usebackq delims=" %%i in ("%sFolderList%") do (
2>nul md "%%~i"

for /f "usebackq tokens=1* delims=[]" %%j in (
`2^>nul dir /b /a:-d /o:d /t:c "%sSourceFolder%\%sMask%" ^| find.exe /n /v ""`
) do if %%j leq 3 >nul move "%%~k" "%%~i\"
)
) else (
echo Can't find folder list file [%sFolderList%].
exit /b 2
)

popd
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)

endlocal
exit /b 0

для условий:

Файлы сортируются по возрастанию, т.е. более старые — в начале.
Список имён содержит относительные имена папок.
Имена считаются заданными относительно исходной папки.




© OSzone.net 2001-2012