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

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

bazik83 18-05-2010 17:20 1416123

Копирование с флешки в папку на компьютере файлов с текущей датой
 
Добрый день.
Задача такая: копировать файлы *.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 1416189

хм... у меня даже каталог правильно не создался... (число пропало)

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

Код:

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

Вот еще вариант
Код:

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 1416239

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

megaloman 18-05-2010 20:16 1416243

bazik83, А у Вас какая операционная система? В каком формате у Вас выдаётся дата?

bazik83 18-05-2010 20:23 1416247

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 1416561

Если в моём скрипте к строчке

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


Время: 13:24.

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