Компьютерный форум 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=205735)

dark-------13 27-04-2011 12:45 1666566

Скопировть только самый новый файл - который создан текущей датой
 
Здравствуйте,

Имеется скрипт который копирует самый "свежий" файл в папке и шифрует его

@echo off
setlocal

for /f "tokens=*" %%i in (' dir /b "Y:\*.xml" ') do set "file=%%i"

copy "Y:\%file%" "D:\V"
cry "D:\V\%file%"

Подскажите пожалуйста, как добавить в приведенный скрипт, проверку на дату, чтобы осуществить следующее:

Скрипт должен копировать с диска Y:\ в D:\V только тот файл который является "свежим" - новым и у которого дата создания текущая.

Заранее спасибо.

amel27 27-04-2011 13:08 1666577

Цитата:

Цитата dark-------13
Имеется скрипт который копирует самый "свежий" файл »

нет, этот скрипт копирует самый последний при сортировке по имени

Цитата:

Цитата dark-------13
как добавить в приведенный скрипт, проверку на дату »

Код:

@echo off

for /f "delims=" %%i in ('dir/b/a-d/od "Y:\*.xml"') do (
for /f %%a in ("%%~ti") do if "%date%"=="%%a" set "file=%%i")

copy "Y:\%file%" "D:\V"
cry "D:\V\%file%"


dark-------13 27-04-2011 13:35 1666587

Скопировались все файлы,а нужно, чтобы только один предположим батник запускается каждый день, а в папке много файлов xml, и каждый день в папке где много файлов создается еще один файл с текущей датой создания (и датой изменения Ну как пример сегодня 27.04.2011) его необходимо скопировать

amel27 27-04-2011 15:43 1666668

Цитата:

Цитата dark-------13
Скопировались все файлы »

вроде не должно, в батнике всего одна команда COPY

- создал диск Y: (через SUBST)
- создал на Y: три файла: 1.xml, 2.xml, 3.xml (соответственно, у всех дата одна)
- создал папку D:\V\
- запустил батник, результат:
Код:

Скопировано файлов:        1.

dark-------13 27-04-2011 19:31 1666799

Вложений: 1
Сделал так переносятся все файлы где ошибка у меня ? Файл прикрепил вот его код
на всякий
@echo off

for /f "delims=" %%i in ('dir/b/a-d/od "H:\*.xml"') do (
for /f %%a in ("%%~ti") do set "file=%%i")

copy "H:\%file%" "X:\V"
rem cry "X:\V\%file%"

dark-------13 27-04-2011 20:02 1666822

Вложений: 1
Пробовал так тоже все файлы копирует

@echo off

for /f "delims=" %%i in ('dir/b/a-d/od "X:\old\*.txt"') do (
for /f %%a in ("%%~ti") do set "file=%%i")

copy "X:\old\%file%" "X:\new"

В папку old кидаю файл readme.txt и создаю новый 1.txt

Foreigner 27-04-2011 20:02 1666823

Код:

@echo off
setlocal

for /f "tokens=*" %%i in (' dir /b /od H:\*.xml ') do (

    for /f "tokens=1" %%j in ( "%%~ti" ) do if "%%j"=="%date: =0%" set "file=%%i"

)

copy "H:\%file%" "X:\V"
rem cry "X:\V\%file%"


dark-------13 27-04-2011 20:18 1666832

Нет не работает, все равно все файлы копирует, может быть убрать все лишние условия и сделать проверку просто по текущей дате - если дата в системе совпадает с датой в файле, то файл скопировать ?!
У меня Seven x64 - не знаю что еще подсказать, все остальные батники от amel27 пашут нормально - спасибо ему большое за помощь, а также всем кто мне помогает.

Foreigner 27-04-2011 20:28 1666836

Цитата:

Цитата dark-------13
Нет не работает, все равно все файлы копирует, »

Покажи _твой_ батник. В моем может копироваться только один файл.

dark-------13 27-04-2011 20:35 1666838

Вложений: 1
Вот прикрепил батник проверь пожалуйста что не так

Foreigner 27-04-2011 20:50 1666846

В общем, оно не хочет выдавать %%~ti на другом диске...
Код:

@echo off
setlocal

pushd H:\

for /f "tokens=*" %%i in (' dir /b /od *.xml ') do (

    for /f "tokens=1" %%j in ( "%%~ti" ) do if "%%j"=="%date: =0%" set "file=%%i"

)

popd

copy "H:\%file%" "X:\V"
rem cry "X:\V\%file%"


dark-------13 28-04-2011 09:41 1667027

Здравствуйте, Foreigner

Вы писали мне
Ваша цитата "В общем, оно не хочет выдавать %%~ti на другом диске..."
, ниже приведенный скрипт заработал на Seven x64 вчера,а сегодня попробовал на другой машине на XP (x32), опять стал копировать все файлы, а нужно один по текущей дате, подскажите как сделать так чтобы %%~ti работало, как правильно создать текстовый файл с данным скриптом, чтобы все работало, как вы их создаете - текстовые файлы что у вас свеже написанный в них скрипт работает ?

Ваш скрипт
@echo off
setlocal

pushd H:\

for /f "tokens=*" %%i in (' dir /b /od *.xml ') do (

for /f "tokens=1" %%j in ( "%%~ti" ) do if "%%j"=="%date: =0%" set "file=%%i"

)

popd

copy "H:\%file%" "X:\V"
rem cry "X:\V\%file%"

dark-------13 28-04-2011 21:30 1667296

Не работает так хотя батник лежит на диске X как и папки in и out

@echo off
SETLOCAL EnableDelayedExpansion

for /f "delims=" %%i in ('dir/b/a-d/od "X:\in\*.txt"') do (
for /f %%a in ("%%~ti") do if "%date%"=="%%a" set "file=%%i")

copy "X:\in\%file%" "X:\out"


Но работает так причем батник должен лежать на диске X в данном примере

@echo off
SETLOCAL EnableDelayedExpansion

for /f "delims=" %%i in ('dir/b/a-d/od "X:\*.txt"') do (
for /f %%a in ("%%~ti") do if "%date%"=="%%a" set "file=%%i")

copy "X:\%file%" "X:\out"

dark-------13 28-04-2011 23:20 1667321

РЕШЕНО в теме http://forum.oszone.net/thread-205784.html - Не работает скрипт копирования самого свежего файла по текущей дате.
Всем спасибо.

anton_bir86 18-02-2016 07:11 2607333

@echo off
setlocal

pushd "папка где нужно найти файлы" || goto:eof

for /f "tokens=*" %%i in (' dir /b /od *.расширение файла ') do set "last=%%i"

copy "%last%" "куда копируем"

popd

добавляем || goto:eof
ищет и копирует последний файл в папке, батник может находиться в любом месте

Iska 18-02-2016 08:43 2607351

Цитата:

Цитата anton_bir86
ищет и копирует последний файл в папке »

Или не копирует. Поскольку ищет не только файлы, но и папки.


Время: 23:21.

Время: 23:21.
© OSzone.net 2001-