前言
本文中运行环境为Win10, 脚本类型为bat脚本, 上传文件使用WinScp客户端进行上传, 下面开始教程
一. 安装WinScp客户端
WinScp客户端官方链接: /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.1set /p ipaddr=请输入目标主机IP: :: 登录用户名:: 如果不需要命令行输入可以直接写死, 如::: set username=appadminset /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^^^&456set /p set password=请输入登录密码: :: 设置需要上传的文件(与该脚本同级目录)set localFilePath=%oldPath%\test\:: 保存的远程目录set remotePath=/app/Test:: 打印提示信息Echo 准备推送文件到远程服务器...:: 生成winscp执行的脚本Echo option batch on > winscp.txtEcho option confirm off > winscp.txt:: 打开远程链接:: 如果用户名或密码带有特殊字符,推荐直接在这里写死(也需要转义):: 密码与ip之间的@符号,也需要转义 写为^@Echo open %username%:%password%^@%ipaddr% > winscp.txt:: 进入到目标文件夹Echo cd %remotePath% >> winscp.txtEcho option transfer binary >> winscp.txt:: 上传到远程Echo put %localFilePath% >> winscp.txtEcho close >> winscp.txtEcho exit >> winscp.txt:: 到 所在盘符cd %winscpInstallDir%:: 使用winscp将文件上传到远程服务器,script为生成的步骤文件 /console /script=%oldPath%\winscp.txt:: 删除本次上传生成的winscp.txtcd %oldPath%del winscp.txt pause
去注释版脚本
@Echo offset oldPath=%cd%set winscpInstallDir=d:\soft\winscpset ipaddr=127.0.0.1set username=appadminset password=admin^^^@123^^^&456set localFilePath=%oldPath%\test\set remotePath=/app/TestEcho 准备推送文件到远程服务器...Echo option batch on > winscp.txtEcho option confirm off > winscp.txtEcho open %username%:%password%^@%ipaddr% > winscp.txtEcho cd %remotePath% >> winscp.txtEcho option transfer binary >> winscp.txtEcho put %localFilePath% >> winscp.txtEcho close >> winscp.txtEcho exit >> winscp.txtcd %winscpInstallDir% /console /script=%oldPath%\winscp.txtcd %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 synchronizewinscp> help synchronizesynchronize local|remote|both [ <local directory> [ <remote directory> ] ]`
如果觉得《使用bat脚本上传文件到Linux服务器》对你有帮助,请点赞、收藏,并留下你的观点哦!