首先去官网下载 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的更多相关文章

  1. Linux命令(七)之上传/共享/挂载文件至Linux系统中

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. 使用js实现点击按钮下载文件

    有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方法: 现在需要在页面上添加一个下载按钮,点击按钮下载文件. 题外话,这个下载图标是引用的 ...

  3. windows上传文件到linux

    1.在putty的网站上下载putty跟pscp 2.安装ssh跟putty sudo apt-get install openssh-server sudo apt-get install putt ...

  4. VS2005控制台程序修改nb0文件

    VS2005控制台程序修改nb0文件 我们要实现的功能就是通过CMD传递进来的值来在nb0文件末尾增加版本信息,新建控制台程序,自动生成的main函数如下,默认的代码非常简单: int _tmain( ...

  5. windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号

    一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...

  6. Linux C 程序 文件操作(Linux系统编程)(14)

    文件操作(Linux系统编程) 创建一个目录时,系统会自动创建两个目录.和.. C语言实现权限控制函数 #include<stdio.h> #include<stdlib.h> ...

  7. 【转】FTP自动上传文件的perl脚本以及配置文件

    这个perl文件将执行的任务是, 按照指定的文件夹目录,自动将该文件夹下的所有文件上传到指定ftp站点的指定目录下 本应用程序设计的几个基本理念是:工具箱再利用:尽可能利用已有的工具:简化运行步骤:不 ...

  8. Windows 下目录及文件向Linux同步

    本文解决的是Windows 下目录及文件向Linux同步的问题,Windows向 Windows同步的请参考:http://www.idcfree.com/article-852-1.html 环境介 ...

  9. 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux

    下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述 ...

随机推荐

  1. 如何正确使用$_SERVER['DOCUMENT_ROOT']识别该路径的文件

    echo $_SERVER['DOCUMENT_ROOT']; 这时输出当前文件所在的路径 D:/phpStudy/WWW/study/php&mysql $_SERVER['DOCUMENT ...

  2. 【开园 and 计划】

    开园 啊啊啊啊啊啊啊啊,郁闷啊,头一回写博客,一刻钟前保存的草稿为何荡然无存??? 那少废话直击要点:今日乃我开园之日,开园为了改变.为了学习.为了积累. 计划 最长为时 3月,截止到 2016年9月 ...

  3. Java里面获取当前服务器的IP地址

    public static void main(String[] args) { try { InetAddress address = InetAddress.getLocalHost();//获取 ...

  4. asp.net开发中遇到的奇葩bug及解决办法(会持续更新。。。)

    1,不知道你们遇没遇到过,在vs2010或更高版本上运行程序的时候,完全没问题,放在IIS中出现了问题,就比如左侧是菜单项,点击菜单右边显示,如果菜单链接是这样:content.aspx,而另一个链接 ...

  5. MFC编程入门之二十(常用控件:静态文本框)

    上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...

  6. ubuntu-kylin16.04搭建lamp环境。

    首先下载安装apache2 输入:sudo apt-get install apache2 安装完毕后,在浏览器中输入:localhost 显示如下图,说明安装正确. 紧接着安装php7.0 输入:s ...

  7. the usage of map.put

    这个不用要的那么详细,对于应用来说,比如举个例子: Map map = new HashMap();map.put("key","value");这样就存入了一 ...

  8. 如何修改file控件

    在移动web开发过程中,常常会用到input file这控件,但css不能修改其样式往往让开发者很头疼,直接把他放到页面上又不美观: 下面介绍的方法,可以将该控件的显示样式替换成一个图标:   该方法 ...

  9. 用computed返回this.$store.state.count,store更改了,但是computed没有调用

    今天出现了这个问题,store更新了,你computed为啥不调用呢??? 另一个.vue更新了state,这个的computed就监听不到了么? 是用这种格式更新的this.$store.commi ...

  10. maven webjar构建及使用

    这么做的目的想要把前端静态文件,css啊js啊一堆的放在一个maven工程下管理,需要的时候调用jar包直接引用. 1.把要打包文件放到另外的maven项目的/src/main/resources下 ...