windows 批处理相关

  • 获取当前shell的时间格式

打开cmd 执行date,

如输出: 2020/04/28

@echo on 
%date:~0,4%%date:~5,2%%date:~8,2%   每个字段代表着年 月 日。

 

  • 获取前N天的日期

@echo off
rem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyymmdd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
%DstDate%
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
[/code]
 

删除前N天的文件

@echo on
:: 删除指定路径下指定天数之前的文件。
rem 指定待删除文件的存放路径
set SrcDir=C:\Test
rem 指定天数
set DaysAgo=1
forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
pause

 

 

实例1. 用SFTP工具(明文)远程拉取服务器当天日期的文件(通过windows 的Task可以做成定时任务)

winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://DMTMGF:Sftp!@#4@127.0.0.1:22" "option transfer binary" "get /DMGF/IN/scpolicy/%date:~0,4%%date:~5,2%%date:~8,2%/*.xml D:\MTS\data\DMTMGF\" "get /DMGF/IN/policy/%date:~0,4%%date:~5,2%%date:~8,2%/*.xml D:\MTS\data\DMTMGF\" "exit" exit
 

实例2.用SFTP工具(明文)远程拉取服务器前一天日期的文件
@echo on
rem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyymmdd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%%DstDate%
winscp.exe /console /command "option batch continue" "option confirm off" "open sftp://CMB_WJCS:Sftp!@#4@127.0.0.1:22" "option transfer binary" "get Decrypt/%DstDate%/* D:\MTS\data\CMB_WJCS\" "exit"
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
[/code]

 

实例3 通过用SFTP工具(秘钥)进行远程拉取文件

@echo off
set str1=D:\qqq\

set YE=%date:~0,4%
set MO=%date:~5,2%
set DA=%date:~8,2%
set DG=1
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false))
set LY=%YE%
set LM=%MO%
if %MO:~0,1%==0 (set MO=%MO:~1,1%)
if %DA:~0,1%==0 (set DA=%DA:~1,1%)
if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else (
if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12) & (set/a LD=31+%DA%-%DG%) else (
set/a LM=%MO%-1
if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%))
for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DG%))
for %%b in (5 7 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DG%))))
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set strLstDt=%LY%%LM%%LD%


set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "currday=%year%%month%%day%"

set "destpath=D:\mts\temp\JDftpcustomerimportfilesfiles\%currday%\"
if not exist %destpath% md %destpath%


"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
 /log="D:\mts\temp\JDftpcustomerimportfilesfiles\log.txt" /ini=nul ^
  /command ^
    "open sftp://trade_baoxian@211.151.10.35:20000/ -hostkey=""ssh-rsa 2048 bc:14:d5:d9:15:d4:25:af:1d:cf:e2:8c:c3:6e:f9:3a"" -privatekey=""C:\Users\Administrator\My Documents\Identity.ppk"" -rawsettings TunnelPortNumber=1 TunnelPublicKeyFile=""D:%%5CMTS-SFTP%%5CPrivite-Key%%5CIdentity.ppk""" ^
   "get /upload/telSale/%strLstDt%/insPolicy/insPolicy_1.csv D:\mts\temp\JDftpcustomerimportfilesfiles\%currday%\" ^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值