Войти

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


bazik83
18-05-2010, 17:20
Добрый день.
Задача такая: копировать файлы *.jpg с флешки на компьютер. Причём копировать только файлы за текущую дату.
Код такой:
@echo off
SetLocal EnableExtensions

set Src=F:\DCIM\100SSCAM
set Dst=Z:\Фото\май2010

cd /d %Dst%
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set fld=%%4.%%3.%%2
md %fld%
for %~ti in *.jpg do xcopy %Src%\*.jpg %Dst%\%fld%\ /e /c /h /y
exit

Папка текущей датой создаётся, но вот файлы не копируются.. Подскажите где ошибка. Понимаю, что в for... но вот где... :unsure:

NiOl
18-05-2010, 18:53
хм... у меня даже каталог правильно не создался... (число пропало)

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

@echo off
set Src=F:\DCIM\100SSCAM
set Dst=Z:\Фото\май2010

set dt=%date:~6,4%-%date:~3,2%-%date:~0,2%
set cdt=%dt:~5,5%-%dt:~0,4%
md %Dst%\%dt%
xcopy /D:%cdt% /-Y %Src%\*.jpg %Dst%\%dt%\

megaloman
18-05-2010, 19:16
Вот еще вариант Echo Off

Set Otkuda=F:\DCIM\100SSCAM\*.jpg
Set Kuda=Z:\Фото\май2010\

Set Dt=%Date%
Set Kuda=%Kuda%%Dt:~6,4%%Dt:~3,2%%Dt:~0,2%\
md "%Kuda%"

FOR %%i IN ("%Otkuda%") DO Call :CopyData "%%i" %%~ti
GoTo :EOF

:CopyData
If %Dt%==%2 Copy "%~f1" "%Kuda%" >nul
Если вместо строки
Set Dt=%Date%
Указать конкретную дату в формате дд.мм.гггг, например,
Set Dt=13.05.2010
То можно копировать за конкретно указанный день
На мой взгляд, чтобы не писать май2010 в батнике, лучше создавать директорию для года, внутри директории для месяцев, и внутри каждого месяца директории для конкретного дня, соответственно в нужных местах изменив строки

Set Kuda=Z:\Фото\

Set Kuda=%Kuda%\%Dt:~6,4%\%Dt:~6,4%%Dt:~3,2%\%Dt:~6,4%%Dt:~3,2%%Dt:~0,2%\

bazik83
18-05-2010, 20:08
хмм... папка создаётся такого вида: 05.2-18-Вт
а файлы копируются если если у /D убрать %cdt%
естественно копирутся все...

megaloman
18-05-2010, 20:16
bazik83, А у Вас какая операционная система? В каком формате у Вас выдаётся дата?

bazik83
18-05-2010, 20:23
win2000 sp4
Краткий: dd.MM.yyyy
Полный: dd MMMM yyyy 'г.'

нда.. на XP оба скрипта отрабатывают на отлично. Будем копать дальше.

Как показали опыты для создания папки нужна была такая строка:
set dt=%date:~9,4%-%date:~6,2%-%date:~3,2%
Всем спасибо.

Готовый скрипт пока такой:
@echo off
set Src=F:\DCIM\100SSCAM
set Dst=Z:\Фото\май2010

set dt=%date:~9,4%-%date:~6,2%-%date:~3,2%
set cdt=%dt:~5,5%-%dt:~0,4%
md %Dst%\%dt%\Уменьшенные
xcopy /D:%cdt% /-Y /e /c /h %Src%\*.jpg %Dst%\%dt%\
start "" "%ProgramFiles%\IrfanView\i_view32.exe" %Dst%\%dt%\*.jpg /jpgq=30 /convert=%Dst%\%dt%\Уменьшенные\*.jpg

megaloman
19-05-2010, 10:17
Если в моём скрипте к строчке

Set Dt=%Date%

Добавить

Set Dt=%Date%
if Not "%Dt:~2,1%"=="." Set Dt=%Dt:~3,6%%Dt:~11,2%

то у меня работает и в Windows XP и в 2000

Но при этом моё примечание Если вместо строки
Set Dt=%Date%
Указать конкретную дату в формате дд.мм.гггг, например,
Set Dt=13.05.2010
для Windows 2000 имеет вид
Set Dt=13.05.10




© OSzone.net 2001-2012