﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-WHy so serious?-随笔分类-其它</title><link>http://www.cppblog.com/tabmood/category/13013.html</link><description>太阳下早已没有新鲜事</description><language>zh-cn</language><lastBuildDate>Thu, 23 Jun 2011 22:40:45 GMT</lastBuildDate><pubDate>Thu, 23 Jun 2011 22:40:45 GMT</pubDate><ttl>60</ttl><item><title>VBS尝试</title><link>http://www.cppblog.com/tabmood/archive/2011/06/23/149349.html</link><dc:creator>Euclidvi31</dc:creator><author>Euclidvi31</author><pubDate>Thu, 23 Jun 2011 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/tabmood/archive/2011/06/23/149349.html</guid><wfw:comment>http://www.cppblog.com/tabmood/comments/149349.html</wfw:comment><comments>http://www.cppblog.com/tabmood/archive/2011/06/23/149349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tabmood/comments/commentRss/149349.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tabmood/services/trackbacks/149349.html</trackback:ping><description><![CDATA[因为女朋友的课程关系，经常有一些统计数据要处理，之前她都用SPSS和Excel来做，碰到有些数据，处理起来还是比较麻烦的。比如上周的一个问题，她要从excel的两个sheet中比较两个列的内容，然后把相同的内容提出来，用sheet2的字段赋值sheet1的其它字段。可能问题比较抽象，其实就是两个dictionary，然后找到相同的key，并用第一个dictionary的value赋值第二个dictionary相同key的value。因为数据量比较大，她就问我有没有什么蛮力的方法。嗯，方法当然有很多，当时就想到了vbs，但是因为不熟悉，所以回来的时候熟悉了一下。其实，如果知道一些vbs的知识，然后在excel里使用它，的确可以达到事半功倍的效果。<br />这里就简单的帖一下上面问题的vbs的代码，好吧，我也懒得解释了，网上也有很多的教程嗯。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">Sub</span><span style="color: #000000; ">&nbsp;mysub2()<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">String</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Dim</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #0000FF; ">As</span><span style="color: #000000; ">&nbsp;Range<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">For</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Each</span><span style="color: #000000; ">&nbsp;ce&nbsp;In&nbsp;Sheet2.Range(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">B2:B20</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Set</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Sheet1.Range(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">B2:B20</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).Find([ce])<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Not</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #0000FF; ">Is</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Nothing</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">Then</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sheet1.Cells(r.Row,&nbsp;r.Column&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).Value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Sheet2.Cells(r.Row,&nbsp;r.Column&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">).Value<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">End</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">If</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">Next</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">End&nbsp;Sub</span></div>这里的数据是这样的：<br /><div><div><div>sheet1 &nbsp; &nbsp; &nbsp;</div><div><img src="http://www.cppblog.com/images/cppblog_com/tabmood/sheet1.JPG" width="241" height="462" alt="" /><br />sheet2<br /><img src="http://www.cppblog.com/images/cppblog_com/tabmood/sheet2.JPG" width="177" height="378" alt="" /></div></div></div><img src ="http://www.cppblog.com/tabmood/aggbug/149349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tabmood/" target="_blank">Euclidvi31</a> 2011-06-23 20:51 <a href="http://www.cppblog.com/tabmood/archive/2011/06/23/149349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我用PowerShell--自动输入脚本</title><link>http://www.cppblog.com/tabmood/archive/2011/06/14/148678.html</link><dc:creator>Euclidvi31</dc:creator><author>Euclidvi31</author><pubDate>Tue, 14 Jun 2011 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/tabmood/archive/2011/06/14/148678.html</guid><wfw:comment>http://www.cppblog.com/tabmood/comments/148678.html</wfw:comment><comments>http://www.cppblog.com/tabmood/archive/2011/06/14/148678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tabmood/comments/commentRss/148678.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tabmood/services/trackbacks/148678.html</trackback:ping><description><![CDATA[自从装了Win7之后就发现了这个东西，感觉脚本很好用，一些linux的习惯可以带过来，虽然机制是不同的，但是效果不错。后来到了公司有了一些空余的时间就会看一些这方面的知识。最近一直想用脚本来自动化测试，虽然是Dev，但是有时候自己的程序一遍遍的跑也挺烦的，所以有想用python或者powershell的脚本来处理，因为python不是很熟悉，而powershell的进展还不错。<br />问题很简单，有时候会遇到一些比较固定的输入来看程序是否正常，但是每改动一个小的feature可能就要跑个几遍，在输入比较多的情况下还是比较麻烦的，还好接口的程序是cmd下的，所以powershell比较管用，使用管道和重定向能够达到一些自动化的效果。<br />其实原理很简单，比如我们有一个计算 x+y 的程序，运行的时候需要用户输入x和y，那么我们每次需要做的就是输入x和y的值来看结果。这个输入比较少，可能没有必要写脚本来测试，但是有的时候输入还是很多的。这时候，可以把要输入的值依次放在文件中，然后使用管道来进行输入重定向，比如我们的程序文件为add.exe，那么我们就可以这样：<br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">gc&nbsp;input.txt&nbsp;</span><span style="color: #000000; ">|</span><span style="color: #000000; ">&nbsp;.\add.exe</span></div>来达到脚本输入的目的，这样就不用一个个自己输入了。<img src ="http://www.cppblog.com/tabmood/aggbug/148678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tabmood/" target="_blank">Euclidvi31</a> 2011-06-14 21:44 <a href="http://www.cppblog.com/tabmood/archive/2011/06/14/148678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#下使用SevenZipSharp进行文件压缩</title><link>http://www.cppblog.com/tabmood/archive/2010/02/03/107123.html</link><dc:creator>Euclidvi31</dc:creator><author>Euclidvi31</author><pubDate>Wed, 03 Feb 2010 11:42:00 GMT</pubDate><guid>http://www.cppblog.com/tabmood/archive/2010/02/03/107123.html</guid><wfw:comment>http://www.cppblog.com/tabmood/comments/107123.html</wfw:comment><comments>http://www.cppblog.com/tabmood/archive/2010/02/03/107123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/tabmood/comments/commentRss/107123.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/tabmood/services/trackbacks/107123.html</trackback:ping><description><![CDATA[<p>C#中好像有关于压缩的库，但是有很多限制，并不能很好的进行自定义压缩。</p> <p>网上也有一些方法，有使用<a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/" target="_blank">SharpZipLib</a>的。也有<a href="http://msdn.microsoft.com/zh-cn/library/aa686114.aspx" target="_blank">C#使用J#类库中的Zip类压缩文件和数据</a>。各有优缺点吧。</p> <p>这里使用SevenZipSharp来进行压缩，用起来也比较方便。<a href="http://www.codeplex.com/sevenzipsharp" target="_blank">SevenZipSharp</a>是codeplex的开源项目，其中使用了7-zip的library。</p> <p>使用的时候需要7z.dll和SevenZipSharp.dll，其中前一个不能直接添加引用，可以把它复制到项目里或者在程序里添加它的路径，像下面这样：</p><pre>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Util
    {
        <span style="color: #0000ff">static</span> Util()
        {
            SevenZipCompressor.SetLibraryPath(@"<span style="color: #8b0000">d:\My Documents\7z.dll</span>");
        }

        <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> CompressFiles() 
        {
            SevenZipCompressor tmp = <span style="color: #0000ff">new</span> SevenZipCompressor();
            tmp.ArchiveFormat = OutArchiveFormat.Zip;
            tmp.CompressFiles(@"<span style="color: #8b0000">D:\test.zip</span>", @"<span style="color: #8b0000">D:\test.txt</span>");
        }
    }</pre>
<p>&nbsp;</p>
<p>也可以使用CompressDirectory来压缩目录和CompressFileDictionary自由形式压缩，在codeplex里有文档的下载。现在最新的版本0.58中CompressFileDictionary会有Exception，这在0.36版本里就没有问题。但是0.36版本压缩空文件的时候也会出错。哎，纠结了……</p><img src ="http://www.cppblog.com/tabmood/aggbug/107123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/tabmood/" target="_blank">Euclidvi31</a> 2010-02-03 19:42 <a href="http://www.cppblog.com/tabmood/archive/2010/02/03/107123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>