【网盘&云存储】百度网盘邀请码

2012年5月16日 onebody 没有评论

百度网盘邀请码

http://pan.baidu.com/netdisk/beinvited?invite_code=fe4903bb00fa8dd0d5f4ed576ee7e9dc

http://pan.baidu.com/netdisk/beinvited?invite_code=dc732a71bf698b6764ed947900c121f4

http://pan.baidu.com/netdisk/beinvited?invite_code=b2d1a84229462d1fa60f038be8670dcb

http://pan.baidu.com/netdisk/beinvited?invite_code=968abfa07fdcdca24879ee9e367da54d

http://pan.baidu.com/netdisk/beinvited?invite_code=da51d02bc720e8620b00f16d31e1080c

http://pan.baidu.com/netdisk/beinvited?invite_code=a57843a6d488361c82f3b1bd75939630

http://pan.baidu.com/netdisk/beinvited?invite_code=98b53c1978c015bfe136ee29f52ba2c7

http://pan.baidu.com/netdisk/beinvited?invite_code=5f9f49a8271d31dda6b3e0604f182e18

http://pan.baidu.com/netdisk/beinvited?invite_code=7d7e9ce92d88596bba1927b7c1c47a9f

http://pan.baidu.com/netdisk/beinvited?invite_code=f7be6958e17189f620dce6db1e364cf1

分类: 软件工具 标签: , ,

【多电脑协作神器】Synergy – 共享多台电脑的键盘/鼠标/剪切板

2012年5月10日 onebody 没有评论

之前提到要介绍下这个软件,使更多的人受益,最近比较忙,就抛砖引玉一下,感兴趣的朋友自己多折腾折腾吧,主意文末的相关资源。

Synergy [多设备,跨平台协作软件] (开源软件)

支持平台:Windows | Mac OS X | Ubuntu/Debian | Fedora/Red Hat | iOS

适用情形

1,多设备,(如:2台或2台以上的PC,或1台PC+1台MAC,或各种同时使用的电脑)
2,跨平台,(如:需要同时在Windows 和 MAC OS 或 Linux 系统下工作)
3,同时协作(如:需要频繁从一台电脑向另一台电脑复制粘贴文本)

通俗情形

hzlzh 的桌子上有1个台式机(Win 7)和一个MacBook Air笔记本(Mac OS Lion),同时协作使用,这时候桌子上的外接设备开始打架了,2个鼠标+2个键盘,还要靠一直移动凳子来达到最佳操作姿势。这时候就需要 Synergy 来解脱键盘和鼠标啦,1键盘+1鼠标+2显示器足矣。

Tips:双Windows系统很好实现,折腾Win 7 + Mac这个需要非常有耐心才能成功。

配置方法如下

1,在Windows 和 Mac OS Lion 下分别下载对应版本,安装。

2,Windows下配置截图如下:(图中IP为局域网IP)

3,Mac OS Lion 下配置如下:
Tips:Mac下先按照官方说明文件安装无界面原版,然后推荐使用 SynergyKM 这个有界面的软件来管理。

下载地址:官方主页 | 下载页面 & SynergyKM :下载页面

相关资源:

Synergy – 教你在局域网中用一套键盘/鼠标控制多台电脑
视频教程For Mac
使用视频 For Win 7

PS: 当然这软件也支持 iOS系统,如果你想在iPhone & iPad上折腾这个功能也可以去 Cydia 下载相应的包,具体看这里吧。

【创业谈】创业公司需要怎样的技术

2012年5月8日 onebody 没有评论

既然是创业团队,想必初始团队成员不会很多,但基本上至少会有1~2个人负责技术。我相信选择创业的每一个人起初都是满怀希望,胸有大志的。但是,一 个月后呢?这里我首先想说的就是团队的执行力。

作为创业团队都知道这比什么都重要。“设计师已经迭代了3个版本了,结果第一个版本都还没上线”,这种事情在创业团队似乎很常见,如果你做了3个月连一个Demo都没上线,你还如何创业?天下武功为快不破,创业者需要具备的基本技能之一就是快,快速迭代,快速成长。这里想到白鸦的逛guang.com,4天就上线了,虽然只有4张静态页面,但至少表达出了自己的产品。不知道是不是受苹果的影响,很多创业者非得把产品做到非常完美才愿意上线,我就经常听到某些团队工作一年多了,产品还未上线,以至于我们以为他们早就洗手不干了。所以,我这里说的快指的不仅仅是没日没夜的工作,也要讲究一些方法,要有取舍,要丢得起面子,大不了第 二个版本再完善。

从技术角的选择来看,创业团队尽量选择开源且有良好社区支持的技术。这样万一在使用过程中出现问题也可以快速找到解决方案,就如现在Unix/Linux占领服务器大半市场,必有其合理性。微软的产品虽然刚开始的时候入门门槛低,但是它其实并不简单,如果真的碰上什么问题,这个风险和成本很难控制,如果你不小心已经上了微软的贼船,是否破釜沉舟掉头就另当别论了。但初创团队,在决定自己技术之前,我觉得你可以大胆的使用开源技术。但这时候问题又来了,开源技术就像大海一样广阔,人人都可以从中分享和获取资源。很多人在大海中拼命的探索最新最酷的技术,我也是一枚Coder,我很能理解作为程序员的这种满足感,但是这是在创业,做公司,不是一个释放自己满足感的地方,很新很酷技术可以研究,以备将来之用,但不要用在自己的产品上,这样会浪费本多不必要的时 间,就如当初在决定小恩爱xiaoenai.com的技术时,Ruby on Rails也是我能接受的最大尺度。Go、NodeJS、Opa什么的了解了解就可以了。

在研发的过程中,也会遇到这样的问题:我们希望把代码写得尽量简洁,美观。有时候我们会为了把一个50行的代码优化成30行清晰、具有维护性的代码 花去半天甚至一天时间,这样的错误我相信所有阅读这篇文章的Coder们都犯过。在产品还没有稳定前,不要急于重构代码。这点不细说,大家应该都明白。但换个角度估计会有很多人想不明白,在产品研发初期,我们是否需要在效率问题上花太多时间?有些人一开始就用100w用户的标准做一个网站我觉得是不适合的,在我看来在初期只要考虑能承受上线后3个月内用户增长规模的标准就可以了,甚至第一版、第二版压根不儿用考虑什么效率问题,肯定跑不死。

有了这些技术和素质,作为创业公司在技术应该80%以上可以站稳了,剩下的就是活动你的双手,用代码构建产品的灵魂。

来源:http://www.leiphone.com/0509-nanfang-chuangye-jishu.html

分类: 在路上, 职场 标签: , , ,

【手机客户端】微信开放平台正式开放SDK文档和下载

2012年4月26日 onebody 2 条评论

近日,微信iPhone客户端4.0版本正式发布,除加入相册及朋友圈功能外,还开放微信接口,支持从第三方应用向微信通讯录里的朋友分享音乐、新闻、美食、摄影等消息内容。日前,微信开放平台正式开放SDK文档和下载,同时,第三方应用的注册申请也即将开通。

 

微信开放平台功能介绍:

1、聊天

面对一张美丽的图片,一首优美的音乐,一段精彩的视频,一则有趣的新闻……你的用户是否苦于不能把它们及时分享给好友?看看微信为你准备的解决方案:

用户在第三方手机应用中通过调用微信可将指定内容分享到微信任一对话中。为了保证用户使用体验的连贯性,在微信端完成分享后用户将返回第三方手机应 用继续之前的操作。 微信用户在会话中通过附件栏直接调用第三方手机应用进行消息分。同样为了保证用户使用体验的连贯性,在第三方手机应用完成分享后,微信用户将返回之前的会 话界面。

开发者可选择让微信用户使用微信、网页、第三方手机应用打开微信好友分享过来的内容,在微信中分享的内容会标注出来源,点击来源将直接打开第三方手机应用或者进入应用下载页面。

2、朋友圈

朋友圈是微信4.0推出的新功能,微信用户通讯录中的好友均能及时看见朋友圈的内容,微信用户可以将手机应用、PC客户端、网站中的精彩内容快速分享到朋友圈中,朋友圈中分享过来的内容支持网页方式打开,分享的内容同样会标注出来源。

接入方式:

1、终端SDK(适合第三方移动应用接入)

微信开放平台注册的用户,通过申请AppID即可获得使用移动应用开发工具包的权限。利用开发工具包,配合微信4.0及以上版本,可在本机进行调 试。开发者可以将第三方应用内容分享到微信会话中,还可以将应用的LOGO放入微信附件栏中,让微信用户方便地在会话中调用第三方应用进行内容选择与分 享。

2、开放协议(适合第三方移动应用、PC客户端和第三方网站接入)

开放协议使用OAuth的授权机制进行开发,针对取得微信授权的第三方合作者。通过开放协议接入方式,第三方手机应用、PC客户端和第三方网站直接通过微信后台将内容分享到朋友圈。

目前,微信已经接入打通了腾讯旗下多款产品,如QQ、QQ邮箱、腾讯微博、腾讯新闻等。4月24日,美丽说宣布成为首批登录微信开放平台的应用之一,用户可以将自己在美丽说中的内容分享到微信中。

微信开放平台:

来源:http://www.cnbeta.com/articles/184540.htm

【Android&Google GS】Android 4.0.4 rears its head again, this time over at AOSP

2012年4月26日 onebody 没有评论
Image

It hasn’t made its official open-source debut yet, but Android 4.0.4 should be hitting the repositories very soon. Leaks of the next Ice Cream sandwich update have been circulating since early February, and Moto’s Xoom was given the first taste today. Now Jean-Baptiste Queru, an engineer on the mobile OS, has posted over at the Android Open Source Project forums to let us know that the appropriate files are being pushed as we speak. Of course, this doesn’t mean that 4.0.4 will hit your handset any time soon… or ever, for that matter. But, it does mean that more custom ROM devs will be incorporating its pile of bug fixes into their products. Watch the source links to be alerted the moment it goes live.

GSM 版 Galaxy Nexus 的 Android 4.0.4 原厂镜像文件也可以下载啰!

不知道大家手上的行动装置是否都已经顺利更新完最新的 Android 4.0.4 了呢?虽说 OTA 更新相当简单,但想必还是有些人会希望能够干净重灌一次自己的 Ice Cream Sandwich 系统。虽然此版的 AOSP 档案早已经开放供大家下载了,不过坦白讲,能有具备完整系统支持的原厂镜像可以刷应该可以省事不少才是。还好!Google 也已经正式将 4.0.4 版本的系统镜像档案下载页面释出,而这次他还在标准系统号「yakju」分支出一个代号为「takju」的系统号,也就是为 Google 最近自己开卖的解锁版 Galaxy Nexus 所准备的系统号 — 此分支版本主要针对 Google Wallet 加入了相关支持 — 顺道一提,版号为 IMM76I 的这个最新系统版本应该也已经正式解决了之前所发生的讯号问题。受够了偶尔让你喷出冷汗的 CM9 nightly 系统而一直暗想哪天要刷回原厂系统吗?那就趁此机会就点击引用来源找找适合自己的版本开始下载吧。

【IT动态】静观 甲骨文和Google就Java问题61亿美元索赔案 坐等结果

2012年4月17日 onebody 1 条评论

 

今天晚上,甲骨文向Google索赔61亿美元的世纪侵权大案将在旧金山联邦法院开审。预计8周的时间后,将有一方潸然泪下。

审理过程中,Google CEO Larry Page、甲骨文CEO Larry Ellison、前Sun公司CEO Jonathan Schwartz和Google Android总裁Andy Rubin都将出庭作证。

该案审理的结果可能会产生非常深远的意义。我们一起来理清一下具体的情况:

专利问题

甲骨文最先于10年夏起诉Google称其拥有的Android系统侵犯了7项Java专利,索赔61亿美元。随后在专利检查中,有5项被剔除出去了,最后留下2项有争议的专利。

Google此前曾希望甲骨文放弃诉讼,作为回报其将抽出一部分Android所获利润再加上280万美元的一次性赔偿来补偿甲骨文(总计约1400万美元)。当然前提是甲骨文要在庭审中证明Android确实侵犯了2项Java专利,不过甲骨文拒绝了。

版权问题

甲骨文还将控诉Google在开发Android的过程中复制了超过37项Java API(application programming interfaces)以及11行源代码。这一控诉对于程序员来说具有深远影响,其判决结果将直接意味着今后开发者能否复制其他产品的API 。

Google则认为API不应该适用版权保护法,因为其更类似开发者用来开发软件的工具。更为简单的说就是Google认为一段具体的程序可以受到版权保护,而用来写程序的语言则不应该受到版权保护。

以上便是该诉讼的一些背景,相信庭审开始后会有更多的消息出来。

 

 

链接: http://fcjblog.com/120417091633

来源:http://www.36kr.com/p/100408.html

 

【Android 安卓】腾讯推出安卓4.0 ROM:Tita

2012年4月11日 onebody 2 条评论

腾讯也出定制ROM了,直指MIUI、点心OS、乐众等。tita是腾讯公司出品的ROM产品。现在腾讯tita.qq.com已经让腾讯关闭了。目前还在内测中。

腾讯推出自制ROM产品:tita。tita来自音译踢踏,象征着轻快,简洁。tita的目标是提供给用户最好用,最方便,最轻快的手机ROM产品。tita 采用全新的安卓4.0 UI,基于全新的安卓4.0内核开发,全新界面设计,体验、性能全面升级。tita 支持一键刷机,刷机工具支持机型暂时只Google Nexus S,其它机型还在开发中。

目前已有网友下载了tita并安装测试了,我在这里提供下tita下载地址:

版本号:titaROMFlash.1.0.0.1755.setup.exe

快盘:http://www.kuaipan.com.cn/file/id_7987324910572437.htm

【Android ROOT】Recovery v2.5.1.2各项选项中文翻译

2012年4月7日 onebody 没有评论

–reboot system now  重启系统
–apply sdcard:update.zip 使用SD卡根目录的update.zip更新系统
–wipe data/factory reset 清空data分区并恢复出厂设置
–wipe cache partition 清空cache分区
–install zip from sdcard 从SDcard选择文件更新系统
–apply sdcard:update.zip 使用SD卡根目录的update.zip 更新系统
–choose zip from sdcard 从SD卡选择zip格式升级包
–toggle signature verification 切换签名验证
–toggle script asserts 切换升级脚本检查 
–backup and restore 备份和恢复
–Backup 备份
–Restore 恢复
–Advanced Restore 高级恢复
–mounts and storage 挂载和存储
–mount /system 挂载/system分区(系统分区)
–mount /data 挂载/data分区(数据分区)
–mount /cache 挂载/cache分区(缓存分区)
–mount /sd-ext 挂载/sd-ext分区(A2SD分区)
–format boot   格式化内核分区
–format system  格式化系统分区
–format data   格式化数据分区
–format cache  格式化缓存分区
–format sdcard  格式化存储卡
–format sd-ext  格式化内存卡SD
–mount USB storage  挂载SD卡为U盘模式
–advanced 高级
–Reboot Recovery 重启Recovery 
–Wipe Dalvik Cache 清空Dalvik缓存
–Wipe Battery Stats 清空电池状态
–Report Error 报告错误
–Key Test 键位测试
–Partition SD Card 对SD卡分区
–Fix Permissions 修复权限

 

来源: http://guide.hiapk.com/news/01292012/215228962.shtml

分类: Java 标签: , , ,

【Shell DOS BAT文件】批处理命令

2012年4月1日 onebody 1 条评论

批处理命令

批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。

任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。

==========

常用命令

echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

==== 注 ===========

首先, @ 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符:

CR(0D) 命令行结束符

Escape(1B) ANSI转义字符引导符

Space(20) 常用的参数界定符

Tab(09) ; = 不常用的参数界定符

+ COPY命令文件连接符

* ? 文件通配符

“” 字符串界定符

| 命令管道符

< > >> 文件重定向符

@ 命令行回显屏蔽符

/ 参数开关引导符

: 批处理标签引导符

% 批处理变量引导符

其次, :: 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意:

第一, 除了 :: 之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号.

第二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中.

=====================

echo 表示显示此命令后的字符

echo off 表示在此语句后所有运行的命令都不显示命令行本身

@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。

pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue…的提示,等待用户按任意键后继续

rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。

==== 注 =====

此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理

————————-

ECHO

当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。

在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。

使用ECHO命令可关闭此功能。

语法

ECHO [ON|OFF]

若要用echo命令显示一条命令,可用下述语法:

echo [message]

参数

ON|OFF

指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO命令。

message

指定让MS-DOS在屏幕上显示的正文。

——————-

CALL

从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。

语法

CALL [drive:][path]filename [batch-parameters]

参数

[drive:][path]filename

指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。

batch-parameters

指定批处理程序所需的命令行信息。

——————————-

PAUSE

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。

语法

PAUSE

REM

在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS中也可以用分号 ; 代替REM命令,但在批处理文件中则不能替代)。

语法

REM [string]

参数

string

指定要屏蔽的命令或要包含的注解。

=======================

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。

批处理文件的内容为:         命令注释:

@echo off           不显示后续命令行及当前命令行

dir c:\*.* >a.txt       将c盘文件列表写入a.txt

call c:\ucdos\ucdos.bat    调用ucdos

echo 你好            显示”你好”

pause              暂停,等待按键继续

rem 准备运行wps         注释:准备运行wps

cd ucdos            进入ucdos目录

wps               运行wps

批处理文件的参数

批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符”%”。

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。

例2:C:根目录下有一批处理文件名为f.bat,内容为:

@echo off

format %1

如果执行C:\>f a:

那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

例3:C:根目录下一批处理文件名为t.bat,内容为:

@echo off

type %1

type %2

那么运行C:\>t a.txt b.txt

%1 : 表示a.txt

%2 : 表示b.txt

于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

==== 注 ===============

参数在批处理中也作为变量处理, 所以同样使用百分号作为引导符, 其后跟0-9中的一个数字构成参数引用符. 引用符和参数之间 (例如上文中的 %1 与 a: ) 的关系类似于变量指针与变量值的关系. 当我们要引用第十一个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下:

初始状态, cmd 为命令名, 可以用 %0 引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过1次shift后, cmd 将无法被引用

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义

cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

^ ^ ^ ^ ^ ^ ^ ^ ^

| | | | | | | | |

%0 %1 %2 %3 %4 %5 %6 %7 %8

遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针.

=================

特殊命令

if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

1、if [not] “参数” == “字符串” 待执行的命令

参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

例:if “%1″==”a” format a:

====

if 的命令行帮助中关于此点的描述为:

IF [NOT] string1==string2 command

在此有以下几点需要注意:

1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种”防空”字符

2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量

3. command 不是语法所必须的, string2 后跟一个空格就可以构成一个有效的命令行

=============================

2、if [not] exist [路径\]文件名 待执行的命令

如果有指定的文件,则条件成立,运行命令,否则运行下一句。

如: if exist c:\config.sys type c:\config.sys

表示如果存在c:\config.sys文件,则显示它的内容。

****** 注 ********

也可以使用以下的用法:

if exist command

device 是指DOS系统中已加载的设备, 在win98下通常有:

AUX, PRN, CON, NUL

COM1, COM2, COM3, COM4

LPT1, LPT2, LPT3, LPT4

XMSXXXX0, EMMXXXX0

A: B: C: …,

CLOCK$, CONFIG$, DblBuff$, IFS$HLP$

具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点:

1. 该设备确实存在(由软件虚拟的设备除外)

2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义)

3. 该设备已准备好(主要是指a: b: …, com1…, lpt1…等)

可通过命令 mem/d | find “device” /i 来检阅你的系统中所加载的设备

另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄.

==================================

3、if errorlevel <数字> 待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。

如if errorlevel 2 goto x2

==== 注 ===========

返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:

if errorlevel 1 set el=1

if errorlevel 2 set el=2

if errorlevel 3 set el=3

if errorlevel 4 set el=4

if errorlevel 5 set el=5

当然, 也可以使用以下循环来替代, 原理是一致的:

for %%e in (1 2 3 4 5 6 7 8…) do if errorlevel %%e set el=%%e

更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章

出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 “重复” 赋值特性, 由大到小排序会导致较小的返回码 “覆盖” 较大的返回码.

另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了

===========================

二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。

如:

goto end

:end

echo this is the end

标号用”:字符串”来定义,标号所在行不被执行。

==== willsort 编注

label 常被译为 “标签” , 但是这并不具有广泛的约定性.

goto 与 : 联用可实现执行中途的跳转, 再结合 if 可实现执行过程的条件分支, 多个 if 即可实现命令的分组, 类似 C 中 switch case 结构或者 Basic 中的 select case 结构, 大规模且结构化的命令分组即可实现高级语言中的函数功能. 以下是批处理和C/Basic在语法结构上的对照:

Batch C / Basic

goto&: goto&:

goto&:&if if{}&else{} / if&elseif&endif

goto&:&if… switch&case / select case

goto&:&if&set&envar… function() / function(),sub()

==================================

三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。

注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。

choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

描述:

该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:

/C choices 指定要创建的选项列表。默认列表是 “YN”。

/N 在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。

/CS 允许选择分大小写的选项。在默认情况下,这个工具

是不分大小写的。

/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项

会得到选择。

/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

/M text 指定提示之前要显示的消息。如果没有指定,工具只显示提示。

/? 显示帮助消息。

注意:

ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,

该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0

的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。

示例:

CHOICE /?

CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C。”

CHOICE /T 10 /C ync /CS /D y

CHOICE /C ab /M “选项 1 请选择 a,选项 2 请选择 b。”

CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。”

==== willsort 编注 ===============================

我列出win98下choice的用法帮助, 已资区分

Waits for the user to choose one of a set of choices.  等待用户选择一组待选字符中的一个

CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]

/C[:]choices Specifies allowable keys. Default is YN  指定允许的按键(待选字符), 默认为YN

/N Do not display choices and ? at end of prompt string.  不显示提示字符串中的问号和待选字符

/S Treat choice keys as case sensitive.  处理待选字符时大小写敏感

/T[:]c,nn Default choice to c after nn seconds  在 nn 秒后默认选择 c

text Prompt string to display  要显示的提示字符串

ERRORLEVEL is set to offset of key user presses in choices.  ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值

如果我运行命令:CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C。”

屏幕上会显示:

确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?

例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):

@echo off

choice /C dme /M “defrag,mem,end”

if errorlevel 3 goto end

if errorlevel 2 goto mem

if errorlevel 1 goto defrag

:defrag

c:\dos\defrag

goto end

:mem

mem

goto end

:end

echo good bye

此批处理运行后,将显示”defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。

四、for 循环命令,只要条件符合,它将多次执行同一命令。

语法:

对一组文件中的每一个文件执行某个特定命令。

FOR %%variable IN (set) DO command [command-parameters]

%%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

例如一个批处理文件中有一行:

for %%c in (*.bat *.txt) do type %%c

则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。

==== willsort 编注 =====================================================

需要指出的是, 当()中的字符串并非单个或多个文件名时, 它将单纯被当作字符串替换, 这个特性再加上()中可以嵌入多个字符串的特性, 很明显 for 可以被看作一种遍历型循环.

当然, 在 nt/2000/xp/2003 系列的命令行环境中, for 被赋予了更多的特性, 使之可以分析命令输出或者文件中的字符串, 也有很多开关被用于扩展了文件替换功能.

========================================================================

批处理示例

1. IF-EXIST

1) 首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下:

@echo off

IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT

IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

然后运行它:

C:\>TEST1.BAT

如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。

2) 接着再建立一个test2.bat文件,内容如下:

@ECHO OFF

IF EXIST \%1 TYPE \%1

IF NOT EXIST \%1 ECHO \%1 does not exist

执行:

C:\>TEST2 AUTOEXEC.BAT

该命令运行结果同上。

说明:

(1) IF EXIST 是用来测试文件是否存在的,格式为IF EXIST [路径+文件名] 命令

(2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。

==== willsort 编注 =====================================================

DOS没有 “允许传递9个批参数信息” 的限制, 参数的个数只会受到命令行长度和所调用命令处理能力的限制. 但是, 我们在批处理程序中, 在同一时刻只能同时引用10个参数, 因为 DOS只给出了 %0~%9这十个参数引用符.

========================================================================

3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下:

@echo off

IF “%1″ == “A” ECHO XIAO

IF “%2″ == “B” ECHO TIAN

IF “%3″ == “C” ECHO XIN

如果运行:

C:\>TEST3 A B C

屏幕上会显示:

XIAO

TIAN

XIN

如果运行:

C:\>TEST3 A B

屏幕上会显示

XIAO

TIAN

在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。

2、IF-ERRORLEVEL

建立TEST4.BAT,内容如下:

@ECHO OFF

XCOPY C:\AUTOEXEC.BAT D:\

IF ERRORLEVEL 1 ECHO 文件拷贝失败

IF ERRORLEVEL 0 ECHO 成功拷贝文件

然后执行文件:

C:\>TEST4

如果文件拷贝成功,屏幕就会显示”成功拷贝文件”,否则就会显示”文件拷贝失败”。

IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

因此下面的批处理文件是错误的:

@ECHO OFF

XCOPY C:\AUTOEXEC.BAT D:\

IF ERRORLEVEL 0 ECHO 成功拷贝文件

IF ERRORLEVEL 1 ECHO 未找到拷贝文件

IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作

IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作

IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误

无论拷贝是否成功,后面的:

未找到拷贝文件

用户通过ctrl-c中止拷贝操作

预置错误阻止文件拷贝操作

拷贝过程中写盘错误

都将显示出来。

以下就是几个常用命令的返回值及其代表的意义:

backup

0 备份成功

1 未找到备份文件

2 文件共享冲突阻止备份完成

3 用户用ctrl-c中止备份

4 由于致命的错误使备份操作中止

diskcomp

0 盘比较相同

1 盘比较不同

2 用户通过ctrl-c中止比较操作

3 由于致命的错误使比较操作中止

4 预置错误中止比较

diskcopy

0 盘拷贝操作成功

1 非致命盘读/写错

2 用户通过ctrl-c结束拷贝操作

3 因致命的处理错误使盘拷贝中止

4 预置错误阻止拷贝操作

format

0 格式化成功

3 用户通过ctrl-c中止格式化处理

4 因致命的处理错误使格式化中止

5 在提示”proceed with format(y/n)?”下用户键入n结束

xcopy

0 成功拷贝文件

1 未找到拷贝文件

2 用户通过ctrl-c中止拷贝操作

4 预置错误阻止文件拷贝操作

5 拷贝过程中写盘错误

chkdsk

0 未找到错误

255 找到一个或多个错误

choice

0 用户按下ctrl+c/break

1 用户按下第一个键

255 检测到命令行中的错误条件

其它 用户按下的有效字符在列表中的位置

defrag

0 碎片压缩成功

1 出现内部错误

2 磁盘上没有空簇。要运行DEFRAG,至少要有一个空簇

3 用户用Ctrl+C退出了DEFRAG

4 出现一般性错误

5 DEFRAG在读簇时遇到错误

6 DEFRAG在写簇时遇到错误

7 分配空间有错

8 内存错

9 没有足够空间来压缩磁盘碎片

deltree

0 成功地删除一个目录

diskcomp

0 两盘相同

1 发现不同

2 按CTRL+C 终止了比较

3 出现严重错误

4 出现初始化错误

find

0 查找成功且至少找到了一个匹配的字符串

1 查找成功但没找到匹配的字符串

2 查找中出现了错误

keyb

0 键盘定义文件装入成功

1 使用了非法的键盘代码,字符集或语法

2 键盘定义文件坏或未找到

4 键盘、监视器通讯时出错

5 要求的字符集未准备好

move

0 成功地移动了指定的文件

1 发生了错误

msav /N

86 检查到了病毒

replace

0 REPLACE成功地替换或加入了文件

1 MS-DOS版本和REPLACE不兼容

2 REPLACE找不到源文件

3 REPLACE找不到源路径或目标路径

5 不能存取要替换的文件

8 内存不够无法执行REPLACE

11 命令行句法错误

restore

0 RESTORE成功地恢复了文件

1 RESTORE找不到要恢复的文件

3 用户按CTRL+C终止恢复过程

4 RESTORE因错误而终止

scandisk

0 ScanDisk在它检查的驱动器上未检测到任何错误

1 由于命令行的语法不对,不能运行ScanDisk

2 由于内存用尽或发生内部错误,ScanDisk意外终止

3 用户让ScanDisk中途退出

4 进行盘面扫描时,用户决定提前退出

254 ScanDisk找到磁盘故障并已全部校正

255 ScanDisk找到磁盘故障,但未能全部校正

setver

0 SETVER成功地完成了任务

1 用户指定了一个无效的命令开关

2 用户指定了一个非法的文件名

3 没有足够的系统内存来运行命令

4 用户指定了一个非法的版本号格式

5 SETVER在版本表中未找到指定的项

6 SETVER未找到SETVER.EXE文件

7 用户指定了一个非法的驱动器

8 用户指定了太多的命令行参数

9 SETVER检测到丢失了命令行参数

10 在读SETVER.EXE文件时,SETVER检测到发生错误

11 SETVER.EXE文件损坏

12 指定的SETVER.EXE文件不支持版本表

13 版本表中没有足够的空间存放新的项

14 在写SETVER.EXE文件时SETVER检测到发生错误

========================================================================

3、IF STRING1 == STRING2

建立TEST5.BAT,文件内容如下:

@echo off

IF “%1″ == “A” FORMAT A:

执行:

C:\>TEST5 A

屏幕上就出现是否将A:盘格式化的内容。

注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。

如:if [%1]==[A] 或者 if %1*==A*

5、GOTO

建立TEST6.BAT,文件内容如下:

@ECHO OFF

IF EXIST C:\AUTOEXEC.BAT GOTO _COPY

GOTO _DONE

:_COPY

COPY C:\AUTOEXEC.BAT D:\

:_DONE

注意:

(1) 标号前是ASCII字符的冒号”:”,冒号与标号之间不能有空格。

(2) 标号的命名规则与文件名的命名规则相同。

(3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。

==== willsort 编注 =====================================================

1)标号也称作标签(label)

2)标签不能以大多数的非字母数字字符开始, 而文件名中则可以使用很多

3)当无法区别两个标签时, 将跳转至位置最靠前的标签

========================================================================

6、FOR

建立C:\TEST7.BAT,文件内容如下:

@ECHO OFF

FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C

运行:

C:\>TEST7

执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。

[IT]版本控制工具历史的10个里程碑

2012年3月19日 onebody 1 条评论

“OSS以及成为历史,这已经成为一种趋势。John T. Hall 预见到,如果项目都是在线开发,那么之前开发的版本就在那里。开发平台服务是一种创新,但是没有人去做,我们就想‘为什么不呢?’”—— Brian Biles

来源:http://blog.jobbole.com/14489/

分类: IT动态 标签: