前言

本文中运行环境为Win10, 脚本类型为bat脚本, 上传文件使用WinScp客户端进行上传, 下面开始教程

一. 安装WinScp客户端

WinScp客户端官方链接: https://winscp.net/eng/download.php
在这里插入图片描述
下载完安装即可, 可以自定义安装目录, 也可以使用默认的, 楼主是选择的自定义安装到了D:\soft\WinScp下

二. 写bat脚本

在需要上传的文件或文件夹的同级目录下新建文件, 文件名命名为 upload.bat(具体名字随意,只要是.bat结尾即可)
脚本内容如下:

@Echo off

:: 先备份当前目录路径
set oldPath=%cd%

:: 设置winscp安装目录(这里修改为个人实际的安装路径)
set winscpInstallDir=d:\soft\winscp

:: 远程主机IP
:: 如果不需要命令行输入可以直接写死, 如:
:: set ipaddr=127.0.0.1
set /p ipaddr=请输入目标主机IP: 

:: 登录用户名
:: 如果不需要命令行输入可以直接写死, 如:
:: set username=appadmin
set /p set username=请输入登录用户名: 

:: 登录密码(注意啦!!!!)
:: 如果密码中存在 & @ 等特殊字符时,请输入 ^ 用与转义
:: 至于这里为什么需要连续3个^,是因为密码在set password中被转义一次,在打开远程连接的时候会再被转义一次
:: 如:  admin^^^@123^^^&456 ==> admin^^@123^^&456 ==> admin^@123^&456 ==> admin@123&456
:: 声明变量 ==》 set赋值转义一次 ==》往winscp.txt中写时候再转义一次 ==》 实际执行时候
:: 如果不需要命令行输入可以直接写死(也需要转义), 如:
:: set password=admin^^^@123^^^&456
set /p set password=请输入登录密码: 

:: 设置需要上传的文件(与该脚本同级目录)
set localFilePath=%oldPath%\test\

:: 保存的远程目录
set remotePath=/app/Test

:: 打印提示信息
Echo 准备推送文件到远程服务器...

:: 生成winscp执行的脚本
Echo option batch on > winscp.txt
Echo option confirm off > winscp.txt
:: 打开远程链接
:: 如果用户名或密码带有特殊字符,推荐直接在这里写死(也需要转义)
:: 密码与ip之间的@符号,也需要转义 写为^@
Echo open %username%:%password%^@%ipaddr% > winscp.txt
:: 进入到目标文件夹
Echo cd %remotePath% >> winscp.txt
Echo option transfer binary >> winscp.txt
:: 上传到远程
Echo put %localFilePath% >> winscp.txt
Echo close >> winscp.txt
Echo exit >> winscp.txt

:: 到winscp.com 所在盘符
cd %winscpInstallDir%

:: 使用winscp将文件上传到远程服务器,script为生成的步骤文件
winscp.com /console /script=%oldPath%\winscp.txt

:: 删除本次上传生成的winscp.txt
cd %oldPath%
del winscp.txt  

pause

去注释版脚本

@Echo off

set oldPath=%cd%
set winscpInstallDir=d:\soft\winscp

set ipaddr=127.0.0.1
set username=appadmin
set password=admin^^^@123^^^&456

set localFilePath=%oldPath%\test\
set remotePath=/app/Test

Echo 准备推送文件到远程服务器...


Echo option batch on > winscp.txt
Echo option confirm off > winscp.txt
Echo open %username%:%password%^@%ipaddr% > winscp.txt
Echo cd %remotePath% >> winscp.txt
Echo option transfer binary >> winscp.txt
Echo put %localFilePath% >> winscp.txt
Echo close >> winscp.txt
Echo exit >> winscp.txt

cd %winscpInstallDir%

winscp.com /console /script=%oldPath%\winscp.txt

cd %oldPath%
del winscp.txt  

pause

写完之后保存, 双击运行, 命令行窗口显示如下即为上传完毕:
在这里插入图片描述
之后进入Linux服务器相应文件夹查看, 文件已经上传完毕, 打完收工
在这里插入图片描述

如果在自己集成的过程中需要打开新的CMD窗口,可以使用以下两种方式:

1.
start cmd /k echo Hello, World!

2.  
start cmd /C pause

区别第一种是新开的窗口不会自动关闭, 而第二种执行完毕以后, 新开的窗口会自动关闭

三. bat脚本中部分特殊字符

1、@  命令行回显屏蔽符
2、%  批处理变量引导符
3、>   重定向符
4、>>  重定向符
5、<、>&、<& 重定向符
6、|  命令管道符
7、^  转义字符
8、&  组合命令
9、&& 组合命令
10、||  组合命令
11、""  字符串界定符
12、, 逗号
13、; 分号
14、() 括号
15、! 感叹号

四. WinScp命令行部分命令

call     执行任意远程Shell命令
cd       改变远程工作目录
chmod    改变远程文件权限
close    关闭会话
exit     关闭所有会话并结束程序
get      从远程目录下载文件到本地目录
help     显示帮助
keepuptodate 在一个远程目录连续反映本地目录的改变
lcd      改变本地工作目录
lls      列出本地目录的内容
ln       新建远程符号链接
lpwd     显示本地工作目录
ls       列出远程目录的内容
mkdir    新建远程目录
mv       移动或者重命名远程文件
open     连接到服务器
option   设置或显示脚本选项的值
put      从本地目录上传文件到远程目录
pwd      显示远程工作目录
rm       删除远程文件
rmdir    删除远程目录
session  列出连接的会话或者选择活动会话
synchronize 用一个本地目录同步远程目录

如果要查看某个命令的具体使用方法用:
help command
例,现在不记得synchroize的具体命令方法了,现在我可以使用:
help synchronize
winscp> help synchronize
synchronize local|remote|both [ <local directory> [ <remote directory> ] ]`

Logo

更多推荐