使用bat脚本上传文件到Linux服务器
前言本文中运行环境为Win10, 脚本类型为bat脚本, 上传文件使用WinScp客户端进行上传, 下面开始教程一. 安装WinScp客户端WinScp客户端官方链接: https://winscp.net/eng/download.php下载完安装即可, 可以自定义安装目录, 也可以使用默认的, 楼主是选择的自定义安装到了D:\soft\WinScp下二. 写bat脚本在需要上传的文件或文件夹的
·
前言
本文中运行环境为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> ] ]`
更多推荐
已为社区贡献1条内容
所有评论(0)