废话少说,具体代码示例如下:

package net.chengyong.ss;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.widget.TextView;

public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView textView = (TextView) findViewById(R.id.textview);
        SpannableString ss = new SpannableString("abcdefghijklmn");
        Drawable d = getResources().getDrawable(R.drawable.icon);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
        ss.setSpan(span, 0, 6, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        textView.setText(ss);

    }
}

1、架构图直观
请输入图片描述

这张是最经典的系统框架图,可以很明显看出,Android系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。

2、架构详解
现在我们拿起手术刀来剖析各个部分。其实这部分SDK文档已经帮我们做得很好了,我们要做的就是拿来主义,然后再加上自己理解。下面自底向上分析各层。

2.1、Linux Kernel
Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。

如果你只是做应用开发,就不需要深入了解Linux Kernel层。

2.2、Android Runtime
Android 包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己 的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。 两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。

Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。

2.3、Libraries
Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:

系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备
媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG
界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层
LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图
SGL——基本的2D图形引擎
3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅
FreeType ——位图和矢量字体渲染
SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎
2.4、Application Framework
通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

所有的应用程序其实是一组服务和系统,包括:

视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器
内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据
资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件
通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告
活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能
2.5、Applications
Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!

3、总结
从 上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。

时间和日期中常用到的几个类:

java.util.Date,
java.util.Calendar,
java.util.GregorainCalendar,
java.text.DateFormat,
java.text.SimpleDateFormat

java.util.Date :

表示特定瞬间,精确到毫秒
一天是 24 60 60 = 86400 秒
世界时(UT 或 UTC) , 格林威治时间 (GMT), 格林威治时(GMT)和世界时(UT)
是相等的,格林威治时(GMT) 是标准的"民间"称呼, 世界时(UT) 是相同标准的
科学称呼。UTC 和 UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的。
(中文版的jdk 真是好啊,跟科普教材是的,呵呵)

常用的构造方法 :

Date();

Date(long date)

(long date) 表示从标准基准时间(称为 "历元" epoch ,即 1970.1.1
00:00:00 GMT)经历的毫秒数。

还有一些构造方法已经 deprecated 了

主要的方法:(介绍几个常用的,详细的查询 jdk 文档)

boolean after(Date when) 测试日期在此日期之后。

boolean before(Date when) 测试日期在此日期之前。

Object clone() 返回此对象的副本

long getTime() 返回自 1970.1.1 00:00:00 GMT 后,此对象表示的毫秒数

void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日
00:00:00 GMT 以后 time 毫秒的时间点。

String toString() 将 Date 对象转化成以下形式的
String:dow mon dd hh:mm:ss zzz yyyy

其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
Oct, Nov, Dec)。

dd 是一月中的某一天(01 至 31),显示为两位十进制数。
hh 是一天中的小时(00 至 23),显示为两位十进制数。
mm 是小时中的分钟(00 至 59),显示为两位十进制数。
ss 是分钟中的秒数(00 至 61),显示为两位十进制数。 60,61 是因为有"润秒"
zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。
如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
yyyy 是年份,显示为 4 位十进制数。

使用 System.currentTimeMillis() 获得当前系统时间的毫秒数

java.util.Calendar :

Calendar 类是一个抽象类.

Calendar rightNow = Calendar.getInstance();

可以使用三种方法更改日历字段:set()、add() 和 roll()。

set(f, value) 将日历字段 f 更改为 value。
此外,它设置了一个内部成员变量,以指示日历字段 f 已经被更改。尽管日历字段
f 是立即更改的,但是直到下次调用 get()、getTime()、getTimeInMillis()、
add() 或 roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调
用 set() 不会触发多次不必要的计算。

add(f, delta) 将 delta 添加到 f 字段中。这等同于调用
set(f, get(f) + delta)

roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。

java.util.GregorianCalendar:
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家
使用的标准日历系统。

java.text.DateFormat:
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并
分析日期或时间。

java.text.SimpleDateFormat:

SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。
它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,
仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或
getDateTimeInstance 来新的创建日期-时间格式化程序。每一个这样的类方法
都能够返回一个以默认格式模式初始化的日期/时间格式化程序。可以根据需要使用
applyPattern 方法来修改格式模式。

日期和时间格式由日期和时间模式 字符串指定。
在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z'
被解释为模式字母,用来表示日期或时间字符串元素。

引用

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

引用

日期和时间模式 结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700

获得当前系统的毫秒数:

代码
package org.lokvin.example.calendar;

public class CalendarExample1 {

    
public static void main(String[] args) {    
        
    java.util.Date date = new java.util.Date();    
    //获得当前系统的毫秒数,自 1970.1.1 00:00:00 GMT    
    long time = System.currentTimeMillis();    
    java.util.Date date1 = new java.util.Date(time);    
    System.out.println("date = " + date.toString());    
    System.out.println("millisecond = " + time);    
    System.out.println("date1 = " + date1.toString());      
}    

}

运行结果:

引用

date = Mon Dec 04 16:01:16 CST 2006
millisecond = 1165219276771
date1 = Mon Dec 04 16:01:16 CST 2006

代码
package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarExample2 {

    
public static void main(String[] args) {    
    //获得当前日期    
    Calendar calendar = Calendar.getInstance();    
    int era = calendar.get(Calendar.ERA);// 0 = BC, 1 = AD    
    System.out.println("ERA = " + era);    
    int year = calendar.get(Calendar.YEAR); //2006    
    System.out.println("YEAR = " + year);    
    int month = calendar.get(Calendar.MONTH);    
    //获得当前月份, 0..11 表示 JAN..DEC    
    System.out.println("Month = " + month);//0 = JAN ... 11 = DEC    
    int day = calendar.get(Calendar.DAY_OF_MONTH);    
    System.out.println("Day of Month = " + day); // 1    
    //获得日期在本周的天数, Sun=1, Mon=2 ... Sta=7    
    int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);    
    System.out.println("Day of Week = " + day_of_week);    
        
    //获得当前时间 12 时制是 Calendar.HOUR    
    int hour12 = calendar.get(Calendar.HOUR);    
    //获得 AM ,PM , 0 = AM, 1 = PM    
    int ampm = calendar.get(Calendar.AM_PM);    
    System.out.println("hour 12 = " + hour12);    
    System.out.println("am pm = " + ampm); //0 = am , 1 = pm    
    //获得当前时间 24 时制 Calendar.HOUR_OF_DAY    
    int hour24 = calendar.get(Calendar.HOUR_OF_DAY);    
    System.out.println("hour 24 = " + hour24);    
        
        
    Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4);    
    //Calendar.getInstance() 得到当前具体到毫秒的一个时间点    
    System.out.println("calendar = " + calendar.getTime().toString());    
    //通过 new GregorianCalendar(2006, Calendar.DECEMBER, 4)    
    //生成的 calendar 除了指定的年,月,日其余为0(时分秒=0)    
    System.out.println("today = " + today.getTime().toString());    
        
        
}    

}

运行结果:

引用

ERA = 1
YEAR = 2006
Month = 11
Day of Month = 4
Day of Week = 2
hour 12 = 4
am pm = 1
hour 24 = 16
calendar = Mon Dec 04 16:22:42 CST 2006
today = Mon Dec 04 00:00:00 CST 2006

两个日期之间的比较:

代码
package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

/*

  • 比较两个 calendar 对象之间的先后
    */
    public class CalendarExample3 {

    public static void main(String[] args) {

      //日期比较    
      Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25);    
      Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1);    
          
      //比较两个日期先后    
      boolean flag = xmas.before(newYear);    
      System.out.println("flag = " + flag);    
          
      flag = xmas.after(newYear);    
      System.out.println("flag = " + flag);    
          
      //两个日期相差的毫秒数    
      long timeDiffMillis = newYear.getTimeInMillis() - xmas.getTimeInMillis();    
      System.out.println("time diff millis = " + timeDiffMillis);    
          
      //两个日期相差的秒数    
      long diffSecs = timeDiffMillis / 1000;    
      System.out.println("time diff secs = " + diffSecs);    
          
      //两个日期相差的分钟    
      long diffMins = timeDiffMillis / (1000 * 60);    
      System.out.println("time diff mins = " + diffMins);    
          
      //两个日期相差的小时    
      long diffHours = timeDiffMillis / (1000 * 60 * 60);    
      System.out.println("time diff hours = " + diffHours);    
          
      //两个日期相差的天    
      long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24);    
      System.out.println("time diff days = " + diffDays);    
              

    }

}

运行结果:

引用

flag = true
flag = false
time diff millis = 604800000
time diff secs = 604800
time diff mins = 10080
time diff hours = 168
time diff days = 7

使用Calendar 计算年龄:

代码
package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

/*

  • 计算年龄
    */
    public class CalendarExample4 {

    public static void main(String[] args) {

      //创建生日的 Calendar 对象    
      Calendar birthDate = new GregorianCalendar(1979, Calendar.JULY, 7);    
      Calendar today = Calendar.getInstance();    
      int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);    
          
      //如果还没有过生日,则 age - 1    
      birthDate.add(Calendar.YEAR, age);    
      if(today.before(birthDate)){    
          age--;    
      }    
      System.out.println("age = " + age);    

    }

}

判断是否为闰年:

代码
package org.lokvin.example.calendar;

import java.util.GregorianCalendar;

/*

  • 判断是否为闰年 leap year
    */
    public class CalendarExample5 {

    public static void main(String[] args) {

      //判断是否"闰年" leap year    
      GregorianCalendar cal = new GregorianCalendar();    
      boolean isLeapYear = cal.isLeapYear(1998);    
      System.out.println("is leap year 1998 = " + isLeapYear);    
      isLeapYear = cal.isLeapYear(2000);    
      System.out.println("is leap year 2000 = " + isLeapYear);    

    }
    }

运行结果 :

引用

is leap year 1998 = false
is leap year 2000 = true

获得其他时区的时间:

代码
package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

/*

  • 获得其他时区当前时间
    */

public class CalendarExample6 {

    
public static void main(String[] args) {    
        
    Calendar cal = new GregorianCalendar();    
    int hour12 = cal.get(Calendar.HOUR);    
    int hour24 = cal.get(Calendar.HOUR_OF_DAY);    
    System.out.println("hour12 in our timezone = " + hour12);    
    System.out.println("hour24 in our timezone = " + hour24);    
        
    //获得其他时区的当前时间,根据 zoneId 获得时区    
    Calendar calJap = new GregorianCalendar(TimeZone.getTimeZone("Japan"));    
    hour12 = calJap.get(Calendar.HOUR);    
    System.out.println("hour12 in japs timezone = " + hour12);    
    hour24 = calJap.get(Calendar.HOUR_OF_DAY);    
    System.out.println("hour24 in japs timezone = " + hour24);    
        
    //获得 zoneId 的列表    
    String[] zoneIds = TimeZone.getAvailableIDs();    
    for(int i=0; i<zoneIds.length; i++) {    
        String zoneId = zoneIds[i];    
        System.out.println("zone id = " + zoneId);    
    }    
}    

}

运行结果:

引用

hour12 in our timezone = 5
hour24 in our timezone = 17
hour12 in japs timezone = 6
hour24 in japs timezone = 18
zone id = Etc/GMT+12
zone id = Etc/GMT+11
zone id = MIT
zone id = Pacific/Apia
zone id = Pacific/Midway
...

格式化日期:

代码
package org.lokvin.example.calendar;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateForamExample {

public static void main(String[] args) {    
    Date rightNow = new Date();    
    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");    
    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");    
    DateFormat format3 = new SimpleDateFormat("h:mm a");    
    DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");    
    DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, ''yyyy");    
    DateFormat format6 = new SimpleDateFormat("yyyy.MM.dd kk:mm 'o''clock' a, zzzz");    
    DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");    
        
    System.out.println("format1 = " + format1.format(rightNow));    
    System.out.println("format2 = " + format2.format(rightNow));    
    System.out.println("format3 = " + format3.format(rightNow));    
    System.out.println("format4 = " + format4.format(rightNow));    
    System.out.println("format5 = " + format5.format(rightNow));    
    System.out.println("format6 = " + format6.format(rightNow));    
    System.out.println("format7 = " + format7.format(rightNow));    
}    

}

输出结果:

引用

format1 = 2006-12-05 06:12:02
format2 = 2006-12-05
format3 = 6:12 下午
format4 = 2006.12.05 公元 at 18:12:02 CST
format5 = 星期二, 十二月, 05, '2006
format6 = 2006.12.05 18:12 o'clock 下午, 中国标准时间
format7 = 02006.十二月.05 公元 06:12 下午

取当月的第一天:
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01");
java.util.Date firstDay=new java.util.Date();
System.out.println("the month first day is "+formats.format(firstDay));
取当月的最后一天:
Calendar cal = Calendar.getInstance();
int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);
java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay);
System.out.println(formatter3.format(cal.getTime()));

用来跟踪触摸速度的类
当你需要跟踪的时候使用obtain()方法来来获得VelocityTracker类的一个实例对象
使用addMovement(MotionEvent)函数将当前的移动事件传递给VelocityTracker对象
使用computeCurrentVelocity (int units)函数来计算当前的速度
使用getXVelocity ()、getYVelocity ()函数来获得当前的速度

在网上找了找,看到有三种方法:

一、在linux下,使用命令行:

find . -type d -name ".svn"|xargs rm -rf 

或者

find . -type d -iname ".svn" -exec rm -rf {} \; 


二、在windows下,使用命令行:
1、在项目平级的目录,执行dos命令:

xcopy project_dir project_dir_1 /s /i 

2、或者在项目根目录执行以下dos命令

for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn" 

第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行
3、添加注册表(亲自动手测试过)
可以将“快速删除SVN版本信息”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。
代码为:

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] 
@="快速删除SVN版本信息" 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] 
@="cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat" 

将这段代码保存为一个.reg文件,双击确认导入注册表中不完整,后来自己手工添加。注意:文件“批处理文件删除SVN版本信息.bat”不能放 在有空格的文件夹下,确认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat”。
批处理文件删除SVN版本信息.bat文件内容如下:

@echo off 
echo *********************************************************** 
echo 清除SVN版本信 息                                                                                               
echo *********************************************************** 
:start 
::启动过程,切换目录 
:set pwd=%cd% 
:cd %1 
echo 工作目录是:& chdir 
:input 
::获取输入,根据输入进行处理 
set source=: 
set /p source=确定要清楚当前目录下的.svn信息吗?[Y/N/Q] 
set "source=%source:"=%" 
if "%source%"=="y" goto clean 
if "%source%"=="Y" goto clean 
if "%source%"=="n" goto noclean 
if "%source%"=="N" goto noclean 
if "%source%"=="q" goto end 
if "%source%"=="Q" goto end 
goto input 
:clean 
::主处理过程,执行清理工作 
@echo on 
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo    删除目录%%c) 
@echo off 
echo "当前目录下的svn信息已清除" 
goto end 
:noclean 
::分支过程,取消清理工作 
echo "svn信息清楚操作已取消" 
goto end 
:end 
::退出程序 
cd "%pwd%" 
pause

注:最后一种方法,如果出现错误,就打开注册表,找到对应的项,吧“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat “直接写入注册表中即可使用

报文件没有关联错误,找到这个注册表项:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
写入:“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat “,注意路径
在使用的时候,不要在要清除的文件夹上右击,在要清除的文件夹里面的子文件夹上右击--》快速删除svn版本信息