Войти

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


dark-------13
28-04-2011, 10:42
Здравствуйте, нужна помощь с скриптом

Ниже приведенный скрипт заработал на 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%"

Foreigner
28-04-2011, 20:15
Не вижу никакой принципиальной разницы между 7-х64 и ХР-х32. Еще раз все проверьте, пути и т.д.

dark-------13
28-04-2011, 21:31
Не работает так хотя батник лежит на диске 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"

Foreigner
28-04-2011, 22:09
dark-------13,
Вообщем так. Дело не в диске. Батник должен выполняться в папке с файлами. В твоем случае так:

@echo off
setlocal

pushd "x:\in"

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

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

)

copy "%file%" "x:\out"
popd

Где "x:\in" папка с файлами. Сам батник может быть где угодно.

dark-------13
28-04-2011, 23:21
Не работает скрипт копирования самого свежего файла по текущей дате »
Спасибо за терпение - Foreigner - все заработало как надо - ура ^____^

anton_bir86
18-02-2016, 07:10
@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:42
ищет и копирует последний файл в папке »
Или не копирует. Поскольку ищет не только файлы, но и папки.




© OSzone.net 2001-2012