中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理如何判断动态日期copy 上一主题 | 下一主题
king2789
新手上路





积分 13
发帖 5
注册 2007-4-20
状态 离线
『楼 主』:  批处理如何判断动态日期copy

列如:090628.bak
         090629.bak
         090630.bak
         090701.bak
-----------------------------------------------------------------------------------------------------
需要判断这些日期然后copy到另一台服务器上。

2009-6-30 22:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 2 楼』:  

if 090628.bak geq 090101.bak echo 今年的备份

2009-7-1 06:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fujiang1000
初级用户





积分 44
发帖 36
注册 2009-3-17
状态 离线
『第 3 楼』:  

我明白楼主的意思了 楼主的意思可能是 没隔几天都会有几个bak文件产生 但是呢 这些bak文件名是以时间来命名 按照楼主的意思是 比如他想拷贝6月29号之后的文件到服务器上 应该怎么做 呵呵

2009-7-10 00:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bobjjh
新手上路





积分 1
发帖 1
注册 2009-8-3
状态 离线
『第 4 楼』:  



2009-8-13 11:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
glbosom
初级用户




积分 31
发帖 17
注册 2008-1-4
状态 离线
『第 5 楼』:  

不太明白你的意思 下面是我写的一个诺顿自动升级的p文
你参考下吧

@echo off
color 2f
for /l %%b in (10 1 31) do (mode con cols=70 lines=%%b & ping -n 1 127.1>nul)
for /l %%c in (70 1 95) do mode con cols=%%c lines=30
set cdpath=%cd%
set fh=         --------------------------------------------
title=诺顿病毒库自动更新-----今天是:%date%
::自动删除上一次升级文件
if not exist delfile.inf goto :Main
for /f %%v in ('^more ^<delfile.inf') do (
for %%w in (%cdpath%\) do (
if exist %%w\%%v del /q %%w\%%v
))

setlocal enabledelayedexpansion
:Main
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
set filePath=\\10.105.10.12\c
set nums=0
set day=
set days=0
echo.&echo.
::echo       指定的日期是:%day%
set input=1
set ouput=2

:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ('date /t') do (
    set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)

set /a sd-=input
if %sd% leq 0 call :count

:: 提取时间
for /f "tokens=1-2 delims=:" %%x in ("%time%") do (
set /a xs=%%x, fz=%%y)
set /a fz+=ouput
if %fz% GEQ 60 call :counttime


set sm=0%sm%
set sd=0%sd%
set filename=%sy%%sm:~-2%%sd:~-2%

:start
set /a nums+=1
set sz=00%nums%
set "sz1=%sz:~-3%"
if exist %filePath%\%fileName%-%sz1%-x86.exe goto ok
if "%sz:~-3%"=="100" goto notexist
goto start

:ok
color 2e
echo.&echo.
echo %fh%
echo.&echo.
echo           正在拷贝 %fileName%-%sz1%-x86.exe 到本地磁盘
echo.&echo.
echo %fh%
echo.&echo.
echo                       请稍等...........
echo.&echo.
echo %fh%
for %%b in (%cdpath%\) do (
copy /y %filePath%\%fileName%-%sz1%-x86.exe %%b>nul
)
at %xs%:%fz% %cdpath%\%fileName%-%sz1%-x86.exe /q>nul
@echo %fileName%-%sz1%-x86.exe>delfile.inf
echo                      任务已完成,即将退出
goto :colornum

:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof

:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
set num=0
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
    set /a num+=1
    if %sm% equ !num! set days=%%i&goto :eof
)
goto :eof

:counttime
set /a xs+=1
set /a fz-=60
if %xs% equ 24 set /a xs=0
goto :eof

:notexist
cls
echo %fh%
echo.&echo.
echo             现在服务器上不存在最新的病毒库文件
echo                     两秒之后自动退出
echo.&echo.
echo %fh%

:colornum
set colornum=-1
:colorSelect
set /a colornum+=1
set colorstr=edcba
color 0!colorstr:~%colornum%,1! & ping -n 2 127.1>nul
if not "%colornum%"=="4" goto :colorSelect
goto :endnum

:endnum
set colsnum=95
set linesnum=30

:End
color 1e
set /a colsnum-=6
set /a linesnum-=2
mode con cols=%colsnum% lines=%linesnum% & ping -n 1 127.1>nul
if not "%colsnum%"=="17" goto :end
@exit


2009-8-14 20:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: