Показать полную графическую версию : [решено] Скопировть только самый новый файл - который создан текущей датой
dark-------13
27-04-2011, 12:45
Здравствуйте,
Имеется скрипт который копирует самый "свежий" файл в папке и шифрует его
@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 только тот файл который является "свежим" - новым и у которого дата создания текущая.
Заранее спасибо.
Имеется скрипт который копирует самый "свежий" файл »нет, этот скрипт копирует самый последний при сортировке по имени
как добавить в приведенный скрипт, проверку на дату »
@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
Скопировались все файлы,а нужно, чтобы только один предположим батник запускается каждый день, а в папке много файлов xml, и каждый день в папке где много файлов создается еще один файл с текущей датой создания (и датой изменения Ну как пример сегодня 27.04.2011) его необходимо скопировать
Скопировались все файлы »вроде не должно, в батнике всего одна команда COPY
- создал диск Y: (через SUBST)
- создал на Y: три файла: 1.xml, 2.xml, 3.xml (соответственно, у всех дата одна)
- создал папку D:\V\
- запустил батник, результат:
Скопировано файлов: 1.
dark-------13
27-04-2011, 19:31
Сделал так переносятся все файлы где ошибка у меня ? Файл прикрепил вот его код
на всякий
@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
Пробовал так тоже все файлы копирует
@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
@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
Нет не работает, все равно все файлы копирует, может быть убрать все лишние условия и сделать проверку просто по текущей дате - если дата в системе совпадает с датой в файле, то файл скопировать ?!
У меня Seven x64 - не знаю что еще подсказать, все остальные батники от amel27 пашут нормально - спасибо ему большое за помощь, а также всем кто мне помогает.
Foreigner
27-04-2011, 20:28
Нет не работает, все равно все файлы копирует, »
Покажи _твой_ батник. В моем может копироваться только один файл.
dark-------13
27-04-2011, 20:35
Вот прикрепил батник проверь пожалуйста что не так
Foreigner
27-04-2011, 20:50
В общем, оно не хочет выдавать %%~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
Здравствуйте, 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
Не работает так хотя батник лежит на диске 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
РЕШЕНО в теме http://forum.oszone.net/thread-205784.html - Не работает скрипт копирования самого свежего файла по текущей дате.
Всем спасибо.
anton_bir86
18-02-2016, 07:11
@echo off
setlocal
pushd "папка где нужно найти файлы" || goto:eof
for /f "tokens=*" %%i in (' dir /b /od *.расширение файла ') do set "last=%%i"
copy "%last%" "куда копируем"
popd
добавляем || goto:eof
ищет и копирует последний файл в папке, батник может находиться в любом месте
ищет и копирует последний файл в папке »
Или не копирует. Поскольку ищет не только файлы, но и папки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.