输出一个Windows系统机器每周六从指定linux机器的指定目录下载文件的批处理程序
时间: 2024-04-09 18:33:19 浏览: 150
下面是一个示例的批处理程序,用于在 Windows 系统上每周六定时从指定的 Linux 机器的指定目录下载文件:
```batch
@echo off
setlocal
REM Linux 机器的 IP 地址和 SSH 用户名
set LINUX_IP=192.168.1.100
set SSH_USERNAME=username
REM Linux 机器上的源文件路径
set SOURCE_DIR=/path/to/source/directory
set FILENAME=file.txt
REM Windows 系统上的目标目录
set TARGET_DIR=C:\path\to\target\directory
REM 设置每周六执行的时间(24小时制)
set SCHEDULED_TIME=12:00
:START
REM 获取当前日期和时间
set CURR_DATE=%date%
set CURR_TIME=%time%
REM 提取当前的星期几(0-6 表示星期日到星期六)
for /f "tokens=1 delims=," %%w in ('wmic path win32_localtime get dayofweek /format:csv ^| findstr /r [0-9]') do set /a WEEKDAY=%%w
REM 判断是否是周六(WEEKDAY=6),并且时间匹配指定的执行时间
if %WEEKDAY% EQU 6 (
if "%CURR_TIME%" EQU "%SCHEDULED_TIME%" (
REM 使用 pscp 命令从 Linux 机器下载文件到 Windows 系统
pscp -pw password %SSH_USERNAME%@%LINUX_IP%:%SOURCE_DIR%\%FILENAME% %TARGET_DIR%
)
)
REM 设置脚本休眠一段时间后再次执行(以毫秒为单位)
ping -n 2 127.0.0.1 > nul
goto START
```
在这个批处理程序中,你需要将 `LINUX_IP` 替换为 Linux 机器的实际 IP 地址,`SSH_USERNAME` 替换为用于 SSH 登录 Linux 机器的用户名,`SOURCE_DIR` 替换为 Linux 机器上要下载文件的目录路径,`FILENAME` 替换为要下载的文件名,`TARGET_DIR` 替换为 Windows 系统上要保存文件的目标目录路径。
在 `SCHEDULED_TIME` 变量中设置每周六执行的时间(24小时制)。例如,上述示例中设置了每周六的12:00执行。
该程序使用了 `pscp` 命令,该命令是 PuTTY 工具包中的一个组件,用于通过 SSH 协议从远程机器复制文件到本地机器。
请确保在 Windows 系统上已安装 PuTTY 工具包,并将 `pscp` 命令添加到系统路径中,以便脚本正常运行。
此脚本会定期检查当前日期和时间,并在每周六指定的执行时间执行下载操作。请注意,这只是一个示例脚本,具体的实施可能因操作系统版本、网络设置等而有所不同。在实际使用中,请根据你的环境和需求进行适当的修改和测试。
阅读全文