显示标签为“Windows”的博文。显示所有博文
显示标签为“Windows”的博文。显示所有博文

2008年7月29日星期二

Windows平台下gVim中的Grep工具的使用

Grep是Unix/Linux平台下重要的搜索工具,如何在Windows平台下gVim中也能使用Grep工具呢?
  • 下载Grep For Win:这是一个开源软件,可以很好的在Windows平台下实现Grep功能
  • 下载Grep.vim:这是gVim的一个插件,用来集成外部Grep工具
  • 配置Grep.vim:在vimrc文件中用命令来配置Grep For Win工具


    " 配置Grep插件
    let Grep_Path = 'D:\InstallSoft\GrepForWin\grep.exe -S'



这样在Vim中采用命令 ":Grep sample E:\CppSource\*.cpp" 就可以在Vim中直接进行Grep了

2008年3月20日星期四

bras的自动拨号

我原以为要像Linux系统一样建立一个l2tp的协议,所以从l2tp上下手来查找bras系统的自动拨号程序。今天突然想到bras拨号也是放在“拨号链接”中,是否可以用adsl的自动拨号脚本呢?于是Google一下,果然找到了Windows的命令,是 rasdial linkname username password。再用命令 hh netcfg.chm 可以查到 rasdial 的详细手册。于是做了一个bat脚本。格式如下:

rasdial bras /disconnect

if %1 == a goto opena
if %1 == b goto openb
goto :EOF

:opena
rasdial bras username@a pwd
goto :EOF

:openb
rasdial bras username@b pwd
goto :EOF


如果要想类似服务一样自动启动的话,可以采用VBS脚本,如:
Dim Wsh
set Wsh=wscript.createobject("wscript.shell")
Wsh.Run "RASDIAL cqcnc username password",1,flase
WScript.quit
注意在WindowsXP或Windows2003下面要对目录安全性进行设置,这样在“计划任务”中添加该脚本,就能自动拨号和断开链接了。

2008年2月21日星期四

Windows下的文本查找

原来我一直使用Editplus的“多文件搜索”功能作为Windows下文本查找工具。但现在我离开Editplus转向Vim后,就没有如此“利器”了。想在Linux下的Grep是专门用于文本搜索的工具,所以Google“Windows grep”,找到一个“Grep for Windows”的压缩包,解压并将目录填入系统“环境变量”的PATH中,就可以在Vim中调用如下命令来进行多文件查找了
:! grep -S "sampletext" C:\\samplesrc\*.cpp

另:在TotalCmd中可利用其Alt+7开启搜索框,选中查找文本即可。

2007年12月5日星期三

Windows脚本技术

Windows与Unix/Linux所不同的根本所在是设计目的,前者为非专业人士设计,图形界面(GUI)是根本;而后者则关注功能实现,命令行(Console)才是根本。所以在Unix/Linux上脚本编写是件很容易的事,但到了Windows上则成难事。其难有三:一则Windows中大部分软件都是基于GUI的,你很难用命令行将其“串联”起来;二则Windows中脚本多要涉及COM等概念,对于Windows的结构体系要有很多的了解方能“游刃有余”;三则MSDN中虽然有相关的脚本介绍,但比较分散,没有系统性,样例程序又很少,这给学习与使用带来很多问题。

我近日要解决一个问题,能自动将某个Zip包中的多个PDF文件解压后分解成页,筛选掉重复的页然后再合并成一个PDF。原以为在两日内就能完成的脚本程序,竟用了一周的时间。现在将其间的思考与经验进行总结:

1.在Windows中有四类脚本。

(1)命令行,就是Windows自带的一些命令,如for等,这些命令可以构成最简单的批处理,特别是For命令,使用得当会起到事半功倍的效果。比如要将某个文件夹中所有的.htm文件后缀名修改成.html,用rename *.htm *.html是不行的,可以用 for %i in (*.htm) do rename %i %il 来实现。如果要将for命令写入BAT文件,则应该为 for %%i in (*.htm) do rename %%i %%il 。

(2)WSH脚本,这是Windows中最常用的一类脚本,也是Windows平台内置的最强大的脚本系统。WSH,即Windows Script Host,其基于COM技术框架,可调用Windows平台内嵌的几个强大的COM对象,最常见的是“WScript.Shell”,“Scripting.FileSystemObject”,“ADODB.Connection”“ADODB.Command”,熟悉COM编程、ASP的人应该对此不陌生。其优点在于可以用VBS或JS等比较高级的语言来编程而不仅仅是命令行的累积。其缺点是调试很困难。
由于其与COM的内在联系紧密,所以有时人们会在BAT文件中临时创建一个VBS文件,然后调用该VBS文件以实现BAT所无法实现的功能,其基本结构如下:

@echo. >>sample.vbs ::创建一个sample.vbs文件,并写入一个空行
@echo WScript.Echo "Hello,WSH World">>sample.vbs ::这里将vbs中的代码写入文件中
.......
@echo. >>sample.vbs ::再写入个空行
@cscript //I //nologo sample.vbs ::调用该vbs脚本
@del sample.vbs ::删除该脚本

(3)基于动态语言环境,如Python,Ruby等。这样的动态语言一般都有与平台交互的对象库,通过动态语言来编写程序,易于调试与OOP化,复用性高,健壮性强,移植性好。但其要学习一门动态语言有些难度,而且对于一些临时性的简单工作也显得“大材小用”。如果要编写一些最常用且要不断修改的程序,基于动态语言是首选。

(4)一些特殊的自动化程序,如AutoIt,AHK(Auto Hot Key)等。这些软件其实就是一个解释器,可以将你编写的脚本进行解释运行。由于它们是完全面向Windows编写的,对于Windows的GUI支持的很好,而且有很强大的辅助编写脚本功能(如将鼠标动作录制成脚本等)这样就极大方便了GUI的自动化。所以如果面对许多GUI操作时,这类脚本当是最好选择。当然由于这些脚本语言具有一些特定性,在编写时仍需要熟悉其函数库;而且这些脚本是与Windows紧密相连的,其无法像动态语言脚本那样可以简单地移植到其它平台上。