使用 VS2005 通过按钮自动上传文件到Linux
首先去官网下载 winscp,官网地址:http://winscp.net/eng/download.php
因为我这里是做自动上传工具,所以我只下载了精简版的:Portable executables
解压后,把两个可执行文件 WinSCP.com,WinSCP.exe 解压到 C:\Windows\System32 目录下
我们当然可以通过明文密码来进行连接,但是这样并不安全。我在这里推荐使用密钥建立连接的方式,
使用密钥建立连接的格式为:
open scp://【用户名】@【host地址】-passphrase=【密钥】
【一】得到密码的密钥
首先打开带图形化界面的 WinSCP.com,建立并保存连接,然后打开 Tools → Preferences
这一步主要目的是生成 .ini 文件,得到密码的密钥:

然后打开 Storage → Configuration storage ,把默认的 Windows registry (注册表)改为 INI file
此时会在当前 C:\Windows\System32 路径下生成一个 WinSCP.ini 文件

然后点击 Save 保存,注意勾选保存密码的选项:

此时就会在 C:\Windows\System32 下生成一个 WinSCP.ini 的文件
打开 WinSCP.ini 文件,拉到最后一行,找到 Password 选项,得到生成的密钥:

【二】编写供自动上传的脚本,这里以上传单个文件为例
我的本地路径:D:\myproj
我的远程路径:/home/qqsprite/myproj
Sync_Single.bat
@echo offset NativePath=%1%
set RemotePath=%NativePath%
set "RemotePath=%RemotePath:D:\myproj\=/home/qqsprite/myproj/%"
set "RemotePath=%RemotePath:\=/%" echo "NativePath : %NativePath%"
echo "RemotePath : %RemotePath%" set UseScp="open scp://qqsprite@192.168.2.20 -passphrase=A35C405095863F6BA757459B4D52BA5826343D323B3F34246D" set CMD=C:\Windows\System32\WinSCP.com /console /command %UseScp%
%CMD% %options% "put %NativePath% %RemotePath%" "exit"
其中,-passphrase 选项后填写你刚才生成的密钥
保存,将此文件命名为“Sync_Single.bat”,存放到你的工程解决方案路径下
【三】在 Visual Studio 2005 中定制一个按钮
在菜单栏,选择“工具”→“外部工具”,在“命令”一栏填写你 Sync_Single.bat 脚本的路径
然后在“参数”一栏右箭头选择“项路径”即 $(ItemPath)
外部命令详细参数从参见 MSDN 文档【外部工具参数】:
https://msdn.microsoft.com/zh-cn/library/ekbzk5f8(v=vs.80).aspx
| 名称 | 参数 | 说明 |
|---|---|---|
|
项路径 |
$(ItemPath) |
当前源的完整文件名(定义形式:驱动器 + 路径 + 文件名);若存在活动的非源窗口时为空白。 |
|
项目录 |
$(ItemDir) |
当前源的目录(定义形式:驱动器 + 路径);若存在活动的非源窗口时为空白。 |
|
项文件名 |
$(ItemFilename) |
当前源的文件名(定义为文件名);若存在活动的非源窗口时为空白。 |
|
项扩展名 |
$(ItemExt) |
当前源的文件扩展名。 |
|
当前行 |
$(CurLine) |
编辑器中光标的当前行位置。 |
|
当前列 |
$(CurCol) |
编辑器中光标的当前列位置。 |
|
当前文本 |
$(CurText) |
选择的文本。 |
|
目标路径 |
$(TargetPath) |
要生成的项的完整文件名(定义形式:驱动器 + 路径 + 文件名)。 |
|
目标目录 |
$(TargetDir) |
要生成的项的目录。 |
|
目标名称 |
$(TargetName) |
要生成的项的文件名。 |
|
目标扩展名 |
$(TargetExt) |
要生成的项的文件扩展名。 |
|
项目目录 |
$(ProjDir) |
当前项目的目录(定义形式:驱动器 + 路径)。 |
|
项目文件名 |
$(ProjFileName) |
当前项目的文件名(定义形式:驱动器 + 路径 + 文件名)。 |
|
解决方案目录 |
$(SolutionDir) |
当前解决方案的目录(定义形式:驱动器 + 路径)。 |
|
解决方案文件名 |
$(SolutionFileName) |
当前解决方案的文件名(定义形式:驱动器 + 路径 + 文件名) |

此时,即可通过点击这个外部工具,来完成自动上传的功能。
如果想更方便,通过点击工具栏的按钮来进行上传,则需要进一步的定制。
右键工具栏,选择“自定义”

然后点击“新建”,为你的自定义按钮创建一个名称“Single”,点击“确定”


打开“命令”选项卡,把对应的外部命令拖动到 Visual Studio 的工具栏上,注意这里没有提示
具体对应的你的哪个外部命令,这时先关闭,然后打开工具栏,查看你定义的外部命令的序号是
第几个,我这里是第16个:

然后重新打开自定义,把对应的外部命令拖动上去(VS其它版本的后续步骤可能会有差别)

这时不要关闭“自定义”对话框,直接右键工具栏上,你刚拖动上去的按钮,修改你的名称,
把“外部命令”改成“Sync_Single”:


此时按钮就显示出名字了,如果你想显示图标,只需要选择“更改按钮图像”即可:

此时就能显示按钮图标了,如果你不想显示文字,选择“默认样式”,就不显示文字了。
此时点击按钮,查看输出窗口,上传成功。
使用 VS2005 通过按钮自动上传文件到Linux的更多相关文章
- Linux命令(七)之上传/共享/挂载文件至Linux系统中
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- 使用js实现点击按钮下载文件
有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方法: 现在需要在页面上添加一个下载按钮,点击按钮下载文件. 题外话,这个下载图标是引用的 ...
- windows上传文件到linux
1.在putty的网站上下载putty跟pscp 2.安装ssh跟putty sudo apt-get install openssh-server sudo apt-get install putt ...
- VS2005控制台程序修改nb0文件
VS2005控制台程序修改nb0文件 我们要实现的功能就是通过CMD传递进来的值来在nb0文件末尾增加版本信息,新建控制台程序,自动生成的main函数如下,默认的代码非常简单: int _tmain( ...
- windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...
- Linux C 程序 文件操作(Linux系统编程)(14)
文件操作(Linux系统编程) 创建一个目录时,系统会自动创建两个目录.和.. C语言实现权限控制函数 #include<stdio.h> #include<stdlib.h> ...
- 【转】FTP自动上传文件的perl脚本以及配置文件
这个perl文件将执行的任务是, 按照指定的文件夹目录,自动将该文件夹下的所有文件上传到指定ftp站点的指定目录下 本应用程序设计的几个基本理念是:工具箱再利用:尽可能利用已有的工具:简化运行步骤:不 ...
- Windows 下目录及文件向Linux同步
本文解决的是Windows 下目录及文件向Linux同步的问题,Windows向 Windows同步的请参考:http://www.idcfree.com/article-852-1.html 环境介 ...
- 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux
下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述 ...
随机推荐
- 图片懒加载--判断div ul中的li是否已经滑动到可视区域里
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 个人博客作业Week3
一.调研 下载并使用,按照描述的bug定义,找出几个功能性的比较严重的bug.至少两个.用专业的语言描述(每个bug 不少于 40字),如有必要,可以配图. 电脑用户未登录就能使用单词本功能,万一是用 ...
- js float 数据相加,有的正确,有的不对
转:http://bbs.csdn.net/topics/360259080 //浮点数加法运算function FloatAdd(arg1,arg2){ var r1,r2,m; try ...
- spring+task配置
1.spring+task文件配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...
- 深入理解js构造函数
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: ? 1 2 3 4 5 6 var o1 ...
- 数据库查询优化-SQL优化
1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默 ...
- 使用Let`s encrypt 免费的https 证书
在iOS上以前暂时屏蔽https使用http的接口,将在未来被苹果拒绝: 之前传苹果会在2017年1月1日强制要求支持https,但是现在苹果又延迟该计划了 https://developer.app ...
- centos7装机和初步运维
1.装机-制作U盘启动盘 CentOS7是一个比较新的版本.在服务器领域用得比较多.因为前安装软件可能没有Ubuntu那样方便,所以桌面领域好像不是很多. https://www.centos.org ...
- loadrunner关联——对服务器返回的数据选择性提交
在跟进项目的过程中,才体会到自己之前闷头看书再写小小的测试程序验证的学习方式很没有效率,知道动态关联,却也只是会参数化式的动态关联,这种关联是我们预先知道要提交的数据而进行的关联:更高一级的可能就是使 ...
- Web开发中管理ipad屏幕的方向变化
Web开发中,我们会遇到在手机垂直或水平视角时展示不同状态的情况.下面我来总结一下检测移动设备方向变化的一些方法. 1 使用javascript 直接看代码: <script type=&quo ...