cyberfan's blog

正其谊不谋其利,明其道不计其功

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  15 随笔 :: 489 文章 :: 44 评论 :: 0 Trackbacks

2005年9月28日 #

昨晚在家里装了red linux 9 ,并顺利弄出了xwindow视窗,用了一下,感觉这是一个用来学习、工作、研究的操作系统,功能非常大,速度也很快。因为国内的知识产权在慢慢地与国际接轨,所以像我这样的习惯用windows的人还是学习一下这样的开源操作系统还是非常有必要的。 以前也在虚拟机上装过linux,所以在操作上是没有问题的,而且在当前,开源是世界性的趋势。
posted @ 2005-09-28 12:25 cyberfan 阅读(283) | 评论 (2)编辑 收藏

2005年9月11日 #

今日,在家中装了opera新出的浏览器,个人感觉比以前有了很大改进,增加了许多新特性。 没多久,我就喜欢了它的操作方式,它的操作方式是有别于ie和firefox的。 现在的这篇文章就是我在它的窗口下敲出来的。 一直在网上听说opera浏览器的兼容性不好,但在我使用过程中还可以,界面比在ie下没多大差别,了不起在字体上或在其它细节上有差别。 像语音控制这样的功能太华而无用,对我来说,它只是用来浏览网页的工具而已。 我现在已用它来作默认网页浏览器了。 强烈推荐这个浏览器。
posted @ 2005-09-11 12:21 cyberfan 阅读(181) | 评论 (0)编辑 收藏

这几天,通过对几个网点的并帐工作,我现在已经对这种并帐方法使用纯熟,并在实践中检验了这种方法的实效。 这种方法的实质就是通过更改所号和帐号,导入系统中,再把帐打平。 这几天,在并帐过程中虽然有几次是准备不足而占用了比较多的时间,但毕竟都成功了,而且到目前为止运行良好。通过了实际业务的检验。
posted @ 2005-09-11 06:58 cyberfan 阅读(186) | 评论 (0)编辑 收藏

2005年9月8日 #

今天,我和单位的几个人到底下分社去撤并网点。在这个过程中,我走了一点弯路。 当我把撤并所的数据导出来后,拷到一台装有win98的电脑上,一开始用写字板编辑,后来用word编辑,但感觉不好,在往电脑里导入时,出错。一个上午就这样过去了。 吃了中饭后,我到网吧把我带的editplus拷到他们的U盘上,再带回来安装,通过,再调整所号和帐号,顺利通过。 导入成功后,再把帐调平,以及其它的设置一一做到。 最后成功。 下午三点左右打道回府。
posted @ 2005-09-08 18:26 cyberfan 阅读(248) | 评论 (0)编辑 收藏

2005年9月2日 #

一个强大全面的邮件客户端-thunderbird,这是一个开源软件,支持邮件、新闻组及rss。合乎我的需要。
在我使用的过程中,我深深地喜爱上了它。
但它也有些小小的遗憾,比如说在rss功能上可能有些小bug。
posted @ 2005-09-02 12:50 cyberfan 阅读(347) | 评论 (0)编辑 收藏

2005年8月15日 #

1、把生产硬盘跳成slave挂在装有 disk editor工具的window硬盘下
2、用disk editor工具搜索生产硬盘上的分区表标识
"hd(40).0123456789ABCDEF" ( 其中"."代表16进制0x00 )
全部用16进制表示:
68 64 28 34 30 29 00 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46
3、由于Unix分区都是按track为单位划分,并且起始于柱面,
那么你找到的位置应该是Cylinder nnn, Head 0, Sector 1才对
其中nnn是实际的Cylinder柱面数,
把nnn乘上你硬盘的磁头head数(如16)就是你分区表的起始位置
4、然后把这个硬盘按slave方式挂到一块正常的SCO系统硬盘下面
# fdisk -f /dev/rhd10
选择建立分区,分区起始位置就是nnn*你的硬盘磁头个数,大小估摸着设置吧
建立后激活这个新分区
# divvy -m /dev/hd10
好了,你硬盘的原来的分区内容都在那里了,
赶紧把从第3个开始的逻辑分区一一用name重新命名了,
mount到正常的SCO系统硬盘下备份数据吧
posted @ 2005-08-15 15:08 cyberfan 阅读(409) | 评论 (1)编辑 收藏

不需要设cmos,不需用n1,n2分区,我是银行的,用这个办法恢复了无数unix机器.

1.准备一个硬盘大于8个G(现在肯定超过8个G),用windows格式化好[fat,ntfs分区都可以]用于存放克隆的*.gho文件,准备一张win98启动盘,必须带goot2003和diskGenius(到处可以买到),自己做ghost2003启动软盘也可以,不过要把diskmanGenius(137k)考入.
2.unix源盘挂在id0的mast上,存储数据的硬盘挂在除了光驱占用的id通道任意2个id上,如果用软区就是任意3个id上.
3.启动进入dos后和克隆windows xp一样对unix进行克隆,制作gho文件存在硬盘待用(local-partition-to image)
4.将unix源盘换成你想恢复的硬盘,必须比unix源盘大,(现在就没有小于8个g的)
注意了,下面的很重要:用diskgenius(以前叫diskman)将新硬盘分成8个g的unix分区,并激活后退出,启动ghost2003,一定选local-disk-from image,不要选local-partition-from image,几分钟后一个一样的unix系统就出来了.
说白了,和克windows xp一样,就是恢复的时候要选local-disk-from image.

注意:1 一定用ghost2003,其他的不认unix分区,
2 一定要将分区激活.
posted @ 2005-08-15 14:57 cyberfan 阅读(499) | 评论 (0)编辑 收藏

2005年8月13日 #

今天因为公事,要处理一个文本文件,但这个文本文件太大,有近1M大小,当用记事本来编辑时,速度特慢,而且即使是p4的机器也容易死机,最后,我想起这个软件,下载安装再使用,一个字“爽”。当晚我又发掘它的其他功能,这才发现它居然能做程序编辑器使用,直接调用编译器进行编译、链接、运行等操作,我就是用它来编辑C语言,特爽。现在,我特将其用法帖于此处,与大家共享之。

EditPlus 2.12 使用技巧集萃

* 文章来源: dream4ever.org

  • 正则表达式类
    【1】 正则表达式应用——替换指定内容到行尾
    【2】 正则表达式应用——数字替换
    【3】 正则表达式应用——删除每一行行尾的指定字符
    【4】 正则表达式应用——替换带有半角括号的多行
    【5】 正则表达式应用——删除空行

  • 软件技巧类
    【6】 软件技巧——键盘记录的注意事项
    【7】 软件技巧——关闭文档标签的便捷方法
    【8】 软件技巧——如何去掉 EditPlus 保存文本文件时的添加后缀提示?
    【9】 软件技巧——提示找不到语法文件的解决办法
    【10】软件技巧——设置editplus支持其它文字,如韩文
    【11】软件技巧——FTP 上传的设置
    【12】软件技巧——如何禁用备份文件功能?
    【13】软件技巧——添加语法文件、自动完成文件、以及剪辑库文件

  • 工具集成类
    【14】工具集成——编译器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis、C#)
    【15】工具集成——让Editplus调试PHP程序
    【16】工具集成——打造 PHP 调试环境(二)
    【17】在 WINPE 中集成 EDITPLUS

  • 后续添加
    【18】支持带UTF-8标记/不带UTF-8标记的文件

    【1】正则表达式应用——替换指定内容到行尾
    原始文本如下面两行
    abc aaaaa
    123 abc 444

    希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg”
    即上面的文本最终替换为:
    abc efg
    123 abc efg

    解决:
    ① 在替换对话框,查找内容里输入“abc.*”
    ② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮
    其中,符号的含义如下:
    “.” =匹配任意字符
    “*” =匹配0次或更多

    注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。

    【2】正则表达式应用——数字替换
    希望把
    asdadas123asdasdas456asdasdasd789asdasd
    替换为:
    asdadas[123]asdasdas[456]asdasdasd[789]asdasd

    在替换对话框里面,勾选“正则表达式”复选框;
    在查找内容里面输入“[0-9][0-9][0-9]”,不含引号
    “替换为:”里面输入“[\0\1\2]”,不含引号
    范围为你所操作的范围,然后选择替换即可。

    实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例
    上面重复使用了“[0-9]”,表示连续出现的三个数字
    “\0”代表第一个“[0-9]”对应的原型,“\1”代表第二个“[0-9]”对应的原型,依此类推
    “[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\0\1\2其它”,则替换结果为:

    asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd

    功能增强(by jiuk2k@CCF):
    如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 ...
    大家根据需要定制

    相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下

    【3】正则表达式应用——删除每一行行尾的指定字符
    因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现
    比如
    12345 1265345
    2345
    需要删除每行末尾的“345”
    这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下
    解决:
    在替换对话框中,启用“正则表达式”复选框
    在查找内容里面输入“345$”
    这里“$”表示从行尾匹配

    如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串
    a. 选择要操作的行
    b. 编辑-格式-删除行注释
    c. 在弹出对话框里面输入要清除的行首字符,确定

    【4】正则表达式应用——替换带有半角括号的多行
    几百个网页中都有下面一段代码:

    我想把它们都去掉,可是找了很多search & replace的软件,都是只能对“一行”进行操作。

    EditPlus 打开几百个网页文件还是比较顺畅的,所以完全可以胜任这个工作。
    具体解决方法,在 Editplus 中使用正则表达式,由于“(”、“)”被用做预设表达式(或者可以称作子表达式)的标志,所以查找
    \n”
    时会提示查找不到,所以也就无法进行替换了,这时可以把“(”、“)”使用任意字符标记替代,即半角句号:“.”。替换内容为
    \n
    在替换对话框启用“正则表达式”选项,这时就可以完成替换了

    评:(lucida@DRL)
    对( ) 这样的特殊符号,应该用\( \)来表示,这也是很标准的regexp语法,可以写为
    \n

    【5】正则表达式应用——删除空行
    启动EditPlus,打开待处理的文本类型文件。
    ①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。
    ②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。
    ③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。
    直接在"查找"中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。
    (1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。
    (2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。
    (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。
    (4)选择“制表符”,添加代表制表符的“\t”。
    (5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。
    (6)选择“换行符”,插入“\n”,表示回车符。
    ④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。

    【6】软件技巧——键盘记录的注意事项
    EditPlus 的键盘记录有些类似于 UltraEdit 的宏操作,不过功能相对单一,录制的文件可编辑性较差。
    由于基本无法编辑录制的文件,所以录制的时候为了避免录制失败,推荐纯粹使用键盘操作,以下是比较关键的几个键盘组合:
    Ctrl+F = 调出查找对话框
    Ctrl+H = 调出替换对话框
    Alt+F4 = 关闭作用,比如,关闭查找对话框、关闭替换对话框,等等
    其它键盘快捷键在“帮助-快捷键列表”里面可以很容易的查找到,这里就不细说了。

    【7】软件技巧——关闭文档标签的便捷方法
    右键单击文档标签工具条,弹出菜单中选择“标签选项”,选中“用鼠标中间的按钮关闭”,这里包括鼠标的滚轮。

    【8】软件技巧——如何去掉 EditPlus 保存文本文件时的添加后缀提示?
    如果你使用 EditPlus 进行文本编辑,那么每次创建文本文件,编辑后保存时,尽管文件类型下拉列表中显示的是文本文件, EditPlus 还是询问你是否添加".txt"后缀,是不是很烦?
    解决方法:
    ① 在程序目录建立一个空的文件“template.txt”
    ② “工具-参数设置-模板”里面,单击“添加”按钮添加模板,“菜单文本”这里输入“Text”,浏览“template.txt”,之后确定即可
    ③ “文件-新建-text”,就可以建立一个空的文本文件,保存时,这个文件自动带有扩展名".txt",也就避免了令人头疼的确认
    ④ 模板设置文件名称为“template.ini”,如果和主程序同一路径,可以使用相对路径
    罗嗦了点,不过管用
    要自动创建带有某种后缀的文件,方法同上。

    【9】软件技巧——提示找不到语法文件 *.stx 的解决办法
    原因多为设置的语法文件不存在或者是路径设置不对。这是因为 EditPlus 的语法是设置文件采用的是绝对路径,而在你设置了语法文件之后,再把程序复制到其它目录,因而导致 EditPlus 无法找到该语法文件。
    解决办法:
    在主程序目录里,找到 Setting.ini 这是 EditPlus 存放语法的文件
    查找后缀为“.stx”、“acp”的文本内容,或者查找带有驱动器符号的行,比如
    Syntax file=C:\Program Files\EditPlus 2\cpp.stx
    那么,就把”C:\Program Files\EditPlus 2\“替换成你当前软件的路径。
    其它提示找不到文件的解决方法同上

    【10】软件技巧——设置editplus支持其它文字,如韩文
    在editplus里打开文件,出来打开文件对话框;然后点击“转换器”后面的那个省略号,会出来自定义转换器对话框;在右边选择你需要的编码方式,添加到左边,然后点确定;最后在下拉框中选择需要的编码方式,然后打开文件即可。

    【11】软件技巧——FTP 上传的设置
    “文件->远程操作->FTP 上传”在“设置”选项卡中设置好参数(“子目录”前面应该加“/”如“/web/”),点击“确定”回到“FTP 上传”选项卡,然后点击“上传”即可;“批量上传”的设置类似。

    【12】软件技巧——如何禁用备份文件功能?
    在“参数选择”的文件选项页,禁用“'保存时自动创建备份文件”选项

    【13】软件技巧——添加语法文件、自动完成文件、以及剪辑库文件
    要添加 *.STX(语法文件)或 *.ACP(自动完成文件):
    1. 选择“参数选择→语法”
    2. 单击“添加”按钮,命名,在“扩展名”部分输入对应扩展名(不带“.”)
    3. 浏览/输入 STX(语法文件部分) 以及 ACP(自动完成文件部分)。
    添加剪辑库文件(*.CTL)
    复制相应 *.CTL 文件到软件安装目录,重新启动 EditPlus ,则系统自动识别。

    作者主页有很多语法自动完成文件下载,地址
    http://editplus.com/files.html

    【14】工具集成——编译器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis)
    在“工具→参数选择→用户工具”选项页设置,设置步骤
    ① 设置组名称,这里也可以不设置
    ② 单击“添加工具→应用程序”按钮并进行如下设置
    ③ 各种类似"$(FilePath)"的参数可以在文本框右侧的箭头下拉菜单中获取,具体含义如下
    参数 描述
    $(FilePath) 文件路径(文件全名,含目录和文件名)
    $(FileDir) 文件目录(不带文件名)
    $(FileName) 文件名(不带目录)
    $(FileNameNoExt) 不带扩展名的文件名(不带目录)
    $(FileExt) 扩展名(当前文件)
    $(ProjectName) 工程名称(当前工程名)
    $(CurLine) 当前行号(光标位置处的行号)
    $(CurCol) 当前列号(光标位置处的列号)
    $(CurSel) 当前文本(插入当前选定文本)
    $(CurWord) 当前单词(插入当前单词)
    $(WindowList) 显示当前窗口列表并选择特定文件


    例子 1. Java 编译器

    菜单文本:Java 编译器
    命令:c:\java\bin\javac.exe
    参数:"$(FilePath)"
    初始目录:$(FileDir)
    捕获输出:开启

    要运行已编译的 Java 类文件,你可以进行如下设置:
    菜单文本:Java
    命令:c:\java\bin\java.exe
    参数:$(FileNameNoExt)
    初始目录:$(FileDir)
    “命令”部分应当替换为实际的 Java 解释器的路径。

    例子 2. Borland C++

    菜单文本:Borland C
    命令:c:\bc\bin\bcc32.exe
    参数:-Ic:\bc\include -Lc:\bc\lib -n$(FileDir) $(FilePath)
    初始目录:c:\bc\bin
    捕获输出:开启

    例子 3. Visual C++

    菜单文本:Visual C++
    命令:c:\msdev\vc98\bin\cl.exe
    参数:"$(FilePath)"
    初始目录:$(FileDir)
    捕获输出:开启

    例子 4. Inno Setup
    菜单文本:编译 Inno
    命令:C:\Program Files\Inno Setup 4\Compil32.exe”
    参数:/cc $(FileName)
    初始目录:$(FileDir)
    捕获输出:开启

    例子 5. nsis
    菜单文本:编译 nsis
    命令:C:\NSIS\makensis.exe
    参数:$(FileName)
    初始目录:$(FileDir)
    捕获输出:开启

    例子 6. C#
    菜单文本:编译 C#
    命令:C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\csc.exe
    参数:$(FileName)
    初始目录:$(FileDir)
    捕获输出:开启

    在上面设置中,在命令部分,必须使用系统中各自编译器的绝对路径。

    设置完毕后,你可以在“工具”菜单运行对应工具了,运行结果会显示在底部的输出窗口,你也可以通过快捷键(Ctrl + 0-9) 运行,或者是通过“用户工具栏”的快捷按钮运行。

    要运行已编译的 *.exe 文件,你可以进行如下设置(此时可执行文件需要和编译文件同名):
    菜单文本:Run
    命令:$(FileNameNoExt)
    参数:
    初始目录:$(FileDir)

    【15】工具集成—— 让Editplus调试PHP程序
    1:打开Editplus,选择"工具->配置用户工具..."菜单。
    2: 在弹出的窗口中选择"添加工具->应用程序",给新程序起一个好记的名字,比如这里我们用"Debug PHP",在"菜单文本"中输入"Debug PHP"。点击"命令行"右边的按钮,找到你的php.exe所在的路径,例如这里是"c:\php\php.exe"。再点击"参数"右边的下拉按钮选择"文件路径",最后再把"捕获输出"前面的复选框选上。
    3:现在测试一下,新建一个php文件,按快捷键Ctrl+1可以激活刚才我们设置的工具(如果你设置了多个工具,快捷键可能会有所不同),现在你可以看到它已经能正常工作了。但是还有一点不太理想:如果你的PHP程序出错,在输出窗口会提示你第几行出错 ,单击这一行提示,Editplus老是提示你找不到某某文件,是否新建。接下下我们要修正这个功能。
    4:打开刚才用户工具设置窗口,找到刚才设置的"Debug PHP"工具。点击"捕获输出"复选框旁边的"输出模式"按钮,会弹出一个定义输出模式的窗体,把"使用默认输出模式"前面的复选框去掉, 在"正则表达式"这一项的文本框中输入" ^.+ in (.+) line ([0-9]+) "(不包括引号),细心的朋友可能会发现,这里使用的也正则表达式的语法。然后,在下面的"文件名"下拉菜单中选择"预设表达式 1",即上边正则表达式中的第一个参数,"行"下拉菜单项选择"预设表达式 2","列"下拉项保持为空。然后保存设置。
    5:好了,现在再来试一下吧,双击出错的行数,Editplus就会自动激活出错文件,并把光标定位到出错行,是不是特别方便呢?!
    现在,Editplus经过我们的"改造",已经可以即时的调试PHP文件了,虽然还不是"可视化"界面的,但对于一些平常的小程序来查错还是非常好用的。Editplus真是不款不可多得的好工具,如果你有什么使用技巧,不要忘了大家一起分享哦。^O^

    如果不能切换错误行号,请尝试作如下修改: (by aukw@CCF)
    1.php.ini 中html_errors = Off打开
    //如果你不打开,3.中的表达式要修改
    2.参数改成:-q -f "$(FilePath)"
    //不加"符号的话文件名有空格的文件调试失败。。
    //-q不输出html头信息,你去掉也行,不过调试时候你一般用不到那些header信息
    3." ^.+ in (.+) line ([0-9]+) " 改成 "^.+ in (.+) on line ([0-9]+)$"
    //如果还是不行,请注意调试结果,自己修改表达式来取出文件名和行号

    【16】工具集成——打造 PHP 调试环境(二)
    1: 把剪辑库定位在 PHP4 Functions 上就可以在编辑时, 利用[插入]->[匹配剪辑]命令,就可以自动完成末输入完整的 PHP 函数(或直接按 F2 键)
    2: 类似上面,在选择部分文字后,同样可以自动完成。(同 F2)
    3: 在[参数选择]->[设置和语法]->PHP->自动完成, 选择目录下的 php.acp 文件,你可以定制自己的自动完成方式.
    4: 想要即时预览文件,可在[参数选择]->[工具]->WEB 服务器中添加本地目录,(注意不要加 http:// , 应是一个有效的站点)。
        如: 主机->localhost/php | 根目录->D:\php
    主机->localhost/asp | 根目录->D:\asp
    主机->localhost/cgi | 根目录->D:\cgi
    完成设置后只要脚本文件位于这些目录下(子目录也没问题), 就能够正确解释.
    5: 各种语法和模板文件可以在 http://editplus.com/files.html 获得,可根据需要选用和编辑。
    6: Ctrl+F11 可显示当前文件中的函数列表.
    7: 添加各种用户工具.如:
    启动MYSQL服务器管理工具->C:\mysql\bin\winmysqladmin.exe
    启动Apache服务器->C:\Apache\bin\Apache.exe -k start
    启动Apache服务器->C:\Apache\bin\Apache.exe -k stop (shutdown)
    8: DBG 附带有一个 prof_results.php 文件,可剖析 PHP 程序的性能.
    虽不是真正的调试器,但已经够了.
    OK! 经过改造后,是不是有点象一个 IDE 什么?还差点,没有即时帮助...看我的,再来:
    9: 把 php_manual_en.chm (最好是扩展帮助手册)加入到用户工具中, 当遇到需要参考的关键字时, 把光标定位其上, 按下快捷键 Ctrl+1, 看到了吗.
    在输入时有想不起来的函数名时, 先按照第 1 条的方法调出函数, 然后...怎么样?

    以上有的是对于调试工具的设置,由于此类工具比较多,大家设置时参考以上的基本就差不多了,所以就不过多的列举了。

    【17】在 WINPE 中集成 EDITPLUS
    可以基于目前的bartpe做得WINPE中,菜单使用nu2menu制作

    默认位置为 \programs\editplus\
    默认系统位置为光盘的 i386 目录

    i386/system32 的 autorun.bat 中添加外壳集成(系统右键)
    regedit /s %SystemDrive%\programs\editplus\REG.REG
    regsvr32 /s \programs\editplus\EPPSHELL.DLL
    (reg.reg保存了epp的工具栏信息,当然注册用户也可以放置注册信息)

    复制editplus安装包里面的文件到programs\editplus\,注意,如果有setting.ini,删掉该文件,在nu2menu里面加入以下句子(可以根据需要安排位于特定菜单条目下)
    FUNC="@GetProgramDrive()\Programs\EditPlus\editplus.exe">EditPlus 文本编辑

    【18】支持带UTF-8标记/不带UTF-8标记的文件
    这里Byte Order Mark翻译为标记/文件头/标签

    参数选择-文件-里面设置“支持不带有UTF-8文件头的UTF-8文件”,我这里翻译标签为UTF-8文件头,如果复选该项,应该是保存为不带标签的Utf-8,如果不复选,应该是保存成带有BOM的UTF-8。
    这样就可以打开带签名的UTF-8文件,并且可以正常编辑,但是又不能打开不带签名的了,想要打开不带签名的还需要改回来...不过虽然有点麻烦,但是总算能用了

  • posted @ 2005-08-13 21:40 cyberfan 阅读(3658) | 评论 (3)编辑 收藏

    2005年8月12日 #

    工具:ghost.exe image file ( 最小而完整的系统所作出来的image文件 ).
    Ghost linux主要几个步骤:
    1、 boot from cd
    2、 restore redhat image into hard disk
    3、 define major hard disk space as reiserfs partition
    4、 update /etc/lilo.conf and execute lilo -v update the /etc/fstab
    5、 cp all / files into /reiser ( the mount partition reiserfs partition )
    6、 reboot ,,ok!!!

    每步的详细操作:
    一、 boot from cd
    二、 restore with ghost
    select destination drive and make sure the new and old sizes are the same.
    (we want to use the free space for reiserfs later )
    ghost过程应该很快,然后reboot,别忘了取出光盘。
    按提示config系统查找到的硬件。
    三、 define new partition with fdisk
    # fdisk /dev/had
    command ( m for help) : p 查看分区情况。
    Command ( m for help ) : n define a new partition .
    1 , 2 分区都已经用了,我们选 3 ,
    first cylinder and last cylinder 都按 default , 也就是用了其它的剩余空间。
    确认他的ID 是83 ,,83对应的是liunx,ID 等于的5对应为extend , 82对应为linux swap 。
    在按p查看一下分区表的情况。这时应该添加了/dev/hda3 了。
    之后 # sync;sync;sync;reboot

    然后 # mkreiserfs / dev / hda3
    系统会提示attention : all data will be lost on ‘ / dev/ hda3 ‘ !(y /n ) 选 y 继续
    initializing journa 10% ..20 % .........100%
    syncing .......

    四、update /etc/lilo.conf and execute lilo -v update the /etc/fstab

    修改lilo.conf
    #vi /etc/lilo.conf
    change "root=/dev/hda1 " to " root= /dev/hda3 "
    # lilo -v -v

    修改 fstab
    # vi /etc/fstab
    把第一行注释掉,然后加入
    " /dev/hda3 / reiserfs default 1 1 "
    保存退出。

    五、cp all / files into /reiser ( the mount partition reiserfs partition )

    # mkdir /reiser
    # mount -t reiserfs /devhda3 /reiser
    # cp -a -x / /reiser
    这步需要点时间,可以出去抽两根烟在回来。

    Cp 完成后
    # sync ; sync ; sync ; reboot

    这样系统的ghost就算大功告成了。
    posted @ 2005-08-12 16:33 cyberfan 阅读(1135) | 评论 (0)编辑 收藏

    农信社储蓄所撤并如何进行微机帐务合并
                 (中创储蓄版)
    在实际工作中,由于种种原因信用社机构的撤并、重组时有发生,对于撤并所都是手工操作的帐务合并则比较简单,但对于有一个所是微机操作或二个所都是微机操作合并起来则技术性较强,如不慎重则麻烦较大,现就对此本人在实际工作中的一些经验提供给信用社各位同行,目的在于相互探讨共同提高
    一、对于撤销所储蓄业务是手工记帐,合并所是微机记帐的操作方法
    1、 在准备并帐前备份好合并所的微机储蓄帐务数据,然后进入后台系统(bankstar用户)定义新的操作员,定义操作员的多少应根据并帐录入时录入员的人数来定。
    2、 定义好操作员后,更可进入建帐录入系统录入撤销所的手工帐务数据,如遇重帐号应统一在重帐号前加二位或三位相同的数(如99、999),在进入建帐系统时请不要以原系统定义的操作员进入,这有利于并帐勾对和统计,在建帐合并时合并所照常可进行微机业务处理,而不必停业。
    3、 当某一储种录入完毕后便可进行此储种打印勾对,打印一律在主机上进行打印。对于活期储蓄,用SQL语句:unload to "/tmp/hzb" select hzb.zh,hzb.hm,hzb.jce,hzb.lxjs
    form hzb,hzk where czy in ("新操作员名1","新操作员名2",...) and hzb.zh=hzk.zh 下载成文本文件,然后对文件/tmp/hzb进行排序再打印,命令是:sort hzb > hzb.txt
    cat hzb.txt > /dev/lp0 。对于定期储蓄,直接用SQL语句:unload to "/dev/lp0" select zh,
    hm,jce,khrq,qxrq,qx from zzb where zcy in ("新操作员名1","新操作员名2",...)进行打印。
    4、 打印、勾对、修改完成后,再用SQL语句对已新建帐录入的储种进行余额统计,命令是:select sum (jce) from hzk where zcy in ("新操作员名1","新操作员名2",...),同理定期也一样,所有新建帐录入的储种余额总数正确后,再同上进行完整打印存档。
    5、 合并录入正确完成后,再进入前台(newbank用户)进行汇总,打印出帐表核对单,然后
    进行合并后的全部总分核对,如完全正确,则合并工作到此结束。
    二、撤并双方都是微机记帐的合并操作方法
    此合并有二种方法(但不论那种方法都应做好合并前的数据备份),第一种是系统本身所带的合并储蓄所功能,但此功能对被撤销所的微机帐号进行了重新设定而未沿用原帐号,这对以后的存取带了很大的不便。另一种方法是对原微机帐号作一个很小的改动(目的是合并时不要出现重帐号,并能尽量用原机器帐号存取款),基本不影响日后存、取操作,现对此方法作一介绍:
    1、 打印被撤销所的所有余额表和分户帐,并存档保管。
    2、 对撤销所的12个数据表进行下载(bxb bxk dhb dhk dzb gsdj hdb hzb hzk lzb lzk zzb ),未有数据的表不要下载,语句是:unload to /tmp/hzb select * from hzb 等。
    3、 在/tmp目录下编辑一个sh程序(在此假设撤销所号是:0000001,合并后所号是:0000002,合并储种是活期储种 0000,程序名是replace) ,逐一对下载带有帐号字段的所有文本文件(有:bxb,bxk,dhb,dhk,hdb,hzb,hzk,lzb,lzk,zzb)进行修改,其程序代码是:
    vi hzb <<. >/dev/null 2>/dev/null # 字符<<后有一园点
    :1,\$s/000000100000/000000200009/
    :1,\$s/000000100001/000000200009/
    :1,\$s/000000100002/000000200009/
    :1,\$s/000000100003/000000200009/
    :1,\$s/000000100004/000000200009/
    :1,\$s/000000100005/000000200009/
    :1,\$s/000000100006/000000200009/
    :1,\$s/000000100007/000000200009/
    :1,\$s/000000100008/000000200009/
    :x
    .
    然后执行:sh replace
    其它储种文本文件也编同样的程序进行修改,不过所号后面的四位数要改(定期储蓄zzb,zzk是0003,零存整取lzb,lzk是0004,定活两便dhb,dhk是0002 等),还有文本文件名要改,如修改定期储蓄zzb:
    vi zzb <<. >/dev/null 2>/dev/null
    :1,\$s/000000100030/000000200039/
    :1,\$s/000000100031/000000200039/
    .
    .
    .
    :x
    .
    4、 把所有下载并修改好的文件拷入到合并所的主机上,然后用SQL语句逐一加载,语句是:load from /tmp/hzb insert into hzb 等。
    5、 进入后台系统调整检验位,调整结束后如有错误提示,可能是有重帐号出现,按回车键把显示的帐号记录下来(经过以上修改重帐号出现的概率是很低的)然后在数据库中用update语句对其帐号进行更改,再调整检验位直至正确。
    6、 如果活期储蓄经过以上方式修改重帐号较多(定期不能用此种方式),则可对replace程序进行修改,但这二种方式不得同时用,程序代码是:
    vi hzb <<. >/dev/null 2>/dev/null
    :1,\$s/000000100000/000000200003/
    :1,\$s/000000100001/000000200004/
    :1,\$s/000000100002/000000200005/
    :x
    .
    这是因为活期储蓄的帐号组成有三种形式:1、建帐录入时帐号不满7位前位为0,
    2、原COBOL程序转入的帐号最前一位为1,3、新开户的最前一位帐号为2,hzk也应用同种方式进行修改。
    7、 进入前台业务系统进行汇总,打印帐表核对单,并与合并后的总帐核对相符。
    8、 合并后,当被撤销所原有的储蓄业务存、取款时,对原存折(单)的帐号输入是把所号后的第一位数字统一改成9(用第二种方式修改的活期储蓄,输入第一位帐号对应方式是:0-->3,1-->4,2-->5),把最后一位数字(检验位)改成?号输入,对于用update语句修改过的重帐号必须查询正确的帐号后再输入。
    posted @ 2005-08-12 16:27 cyberfan 阅读(386) | 评论 (1)编辑 收藏

    这是我以前的心得。



    今日发现硬盘的一个分区不能识别,其盘符还在,但就是打不开,其格式显示为raw格式。经我在与网上众位大虾研究后,现将解决方案公示如下:

    方法一(保留数据法):
    你可以这样试一下:进"控制面板"找到"管理工具",将其打开,在将"本地安全策略"打开,在将"安全选项"打开,在右面窗口找到"网络访问:本地帐户的共享和安全模式"后的"仅来宾"改为"经典",退出回到我的电脑,在D盘上点右键找"安全"标签,将其乱码删掉,然后添加本计算机的用户即可。

    注意:本方法可能针对的也是以前是NTFS格式分区的。与方法三大致雷同。
    方法二(无法保留数据):
    使用控制面板——管理工具——计算机管理——磁盘管理
    删除,重新建立分区即可
    方法三(可以保留数据,原来分区格式为NTFS格式):
    单击"工具"--"文件夹选项"-把"使用简单文件共享"的勾去掉,RAW格式的分区(原先是NTFS分区格式)就有"安全选项"了,然后重新设置一下权限,就OK了。
    方法四(理论上应该可以保留数据,未经过测验):
    用DM分区软件看一下有没有分区表错误,或者用PQ软件把分区恢复为FAT32或者NTFS格式。
    方法五(别人的方法可以保留数据。PS:感觉很麻烦):
    具体方法如下:
    1、使用EasyRecovery Pro 6.06,选择数据恢复---》Advanced Recovery(选用高级选项自定义数据恢复功能);
    2、选择已变为RAW格式的盘符,点击下角的高级选项;
    3、在文件系统扫描中,文件系统选"NTFS",点高级扫描,选择右下角的"高级选项",把簇大小和数据起始位置都设为0;
    4、点击分区设置,使用MFT方式(这点一定不能错);然后确定;
    5、点击下一步,开始扫描文件系统,然后就是等~~~~~~~~~~~~~~~,要的时间比较长,要耐心。完成后就会发现找到了一个NTFS的盘符,再点击找到的盘符,开始扫描;
    6、扫描完成后你就会发现所有的文件都已找到,然后点击恢复,选择一个可用的盘来存你恢复的文件就行;
    7、最后格式化出问题的盘~~~把恢复的文件拷回去~~~~~~OK 一切都完好如初。
    posted @ 2005-08-12 16:25 cyberfan 阅读(10790) | 评论 (3)编辑 收藏

    我乃一九头鸟也,自99年自购一台电脑自学以来,匆匆数年,痴心不改。自觉略有心得,今借这一方宝地广交天下豪杰。

    性格决定命运
    思路决定出路

    我的blog:  http://www.cnitblog.com/cyberfan/
    我的QQ: 195575494
    我的msn: alhpd@hotmail.com
    我的电邮:alhpd@163.com
         hpd780301@gmail.com
    我的QQ群:1952539

    建站目的:网络资源丰富,为了大家互相交流,资源共享。声明:本站部分资料来自网络和论坛,不做商业用途,仅供网友享用!!如有侵权请告之 alhpd@163.com,本站将立删除!特此声明!!
    posted @ 2005-08-12 16:21 cyberfan 阅读(181) | 评论 (0)编辑 收藏

    自从2004年下半年从陈店调回来后,我参加了几次网点的合并工作,当时均是手工输入,而且网点并帐后,数据量大增加,结果许多网点一张软盘备不了份,只能用两张,而软盘又容易坏,很令人头痛,我后来在网上发现了这个问题的解决办法,现特帖出,与大家共享之。

    先把sco openserver 5.0.5升级成5.0.7版,用U盘备份,程序如下:



    #USB Storage Utility *** 信用社业务数据U盘备份程序1.0版
    #(c) Copyright 2004
    #编辑修改: cyberfan alhpd@163.com
    # my blog : cyberfan.blogchina.com
    #最后修改时间:2004-11-20
    #
    #=============================
    #==========================环境参数设置========================
    cx_backup_dir=/usr/tmp/bankstar #储蓄硬盘备份路径
    dg_backup_dir=/usr/tmp/single #对公硬盘备份路径
    MOUNT_POINT=/mnt #U盘系统装载点
    DEV=/dev/dsk/1sC #U盘设备名称
    DAYS_U=40 #U盘备份保留天数
    DAYS_H=400 #硬盘备份保留天数
    #==========================结束========================

    MONTH=
    DAY=
    #
    change_time()
    {
    echo "======================== 系 统 时 间 修 改 ========================="
    echo "例如:修改时间为9月1日18点30分,输入内容为:09011830,回车确认。"
    echo "退出请输入:q"
    echo ""
    echo "[2;7;4m 现在系统时间是:`date '+%Y年%m月%d日%H时%M分'` [2;7;0m"
    echo "[2;7;1m 请输入新的时间: [2;7;0m\c"
    read input_date rest
    [ "$input_date" ] || continue
    case $input_date in
    q]
    echo "放弃退出。"
    sleep 3
    return 1
    ;;
    *]
    sel_long=`expr length $input_date`
    [ $sel_long -eq 8 ] || {
    msg_box "输入错误"
    return 1
    }
    date -t $input_date 1>/dev/null 2>/dev/null
    echo "修改完成。"
    echo "[2;7;4m 新的系统时间是:`date '+%Y年%m月%d日%H时%M分'` [2;7;0m"
    echo "如果不正确,请重新使用本功能更改时间\c"
    read any
    return 1
    esac

    ]
    ########
    msg_box()
    {
    #printf "[12;24H"
    cat <<MSG
    [44m == 提 示 == [40m $@,按任意键继续.
    MSG
    read any
    ]

    #装载U盘
    mount_U()
    {
    msg_box "请将U盘插入USB接口"
    mount -o lower ${DEV} ${MOUNT_POINT}
    if [ $? -ne 0 ]
    then
    msg_box "U盘安装有误 ,请检查"
    return 1
    else
    return 0
    fi

    }
    #
    #卸载U盘
    unmount_U()
    {
    cd /usr/usb
    umount $DEV
    [ $? -ne 0 ] && msg_box "卸载U盘出错"
    }
    ##

    ################
    ###############
    #自动安装软件
    #自动安装软盘制作方法:
    #1、在unix下,用tar cv6制作软盘。
    #2、软盘必须包括install文件。设为"可执行",内容为自动安装脚本。成功返回exit 0,失败返回exit 1
    #3、所有文件应放在/tmp/autoinst目录下面。
    autoinst()
    {
    change_to_dir /tmp/autoinst
    rm -r * >/dev/null 2>/dev/null
    ############################判断安装介质
    echo "[1] 从软盘安装"
    echo "[2] 从U 盘安装"
    echo "[3] 退出"
    echo "[2;7;4m请选择安装介质[1-3]:[2;7;0m\c"
    read sel rest
    [ "$sel" ] || continue
    sel_long=`expr length $sel`
    [ $sel_long -eq 1 ] || continue
    [ $sel -lt 1 -o $sel -gt 4 ]&& break

    case $sel in
    1]
    echo "[2;7;4m请将软盘放入软驱,按任意键继续 [2;7;0m\c"
    read any
    echo "正在拷贝软盘数据,请稍候......"
    tar xv6
    ;;
    2]
    #判断是否安装U盘
    mount_U || break
    [ -d "$MOUNT_POINT/autoinst" ] || {
    echo "没有安装程序, 任意键返回"
    read any
    unmount_U #卸载U盘
    return 1
    }
    cp -r $MOUNT_POINT/autoinst/* ./
    ;;
    3)
    echo "放弃安装退出,按任意键继续。\c"
    read any
    return 1
    esac

    #判断拷贝结果。
    [ $? -eq 0 ] || { echo "文件拷贝失败!!!按任意键继续\c"
    read any
    [ $sel = 2 ] && unmount_U #卸载U盘
    return 1
    }
    #开始安装
    cd /tmp/autoinst
    chmod +x ./install
    ./install
    #执行安装程序,获取返回值。成功返回0,失败返回1
    [ $? -eq 0 ] && {
    echo "[2;7;1m程序安装完成,按任意键继续 [2;7;0m\c"
    read any
    [ $sel = 2 ] && unmount_U #卸载U盘
    [ $sel = 3 ] && umount /dev/cd0
    return 1
    }
    echo "[2;7;4m程序安装失败,按任意键继续 [2;7;0m\c"
    read any
    [ $sel = 2 ] && unmount_U #卸载U盘
    [ $sel = 3 ] && umount /dev/cd0
    return 1
    }
    ############33
    help_me()#帮助文档
    {
    [ -f "./vmore" o -f "./help" ] || {
    echo "没有帮助文件, 任意键返回"
    read any
    return 1
    }
    clear
    echo ""
    echo ""
    echo "帮助文件操作指南:"
    echo " ┌────────────────┐"
    echo " │ →: 左移一列 ←: 右移一列│"
    echo " │L/l: 左移一屏 R/r: 右移一屏│"
    echo " │END: 左移一屏 HOME: 右移一屏│"
    echo " │ ↑: 上移一行 ↓: 下移一行│"
    echo " │TAB: 左移八列 BKS: 右移八列│"
    echo " │ PD: 下翻一页 PU: 上翻一页│"
    echo " │CTRL_L: 重画屏幕 Q : 退出 │"
    echo " └────────────────┘"
    echo ""
    echo "[2;7;4m按任意键进入即时帮助,请输入"q"退出帮助页面。 [2;7;0m\c"
    read any
    ./vmore help
    }
    ###############3
    check_passwd() {
    stty -echo
    cxsh=`dbaccess bankstar -<<-End 2>/dev/null
    select sh from cxs;
    END`
    # 获得储蓄所号 ,设为密码。
    passd=`echo $cxsh | awk '{print substr($0,4,7)}'`
    echo "[2;7;4m请输入管理员口令$passd:[2;7;0m\c"

    read sel
    if [ "$sel" -ne $passd ]
    then
    echo "\n[2;7;4m口令错误,按任意键继续 [2;7;0m\c"
    read any
    stty echo
    return 1
    else
    echo "[2;7;1m口令正确![2;7;0m\n\n"
    stty echo
    return 0
    fi
    }
    #=================================
    check_passwd_new() {
    stty -echo
    pass=`date '+%Y%m%d'` #将当前日期yyyymmdd设为动态的密码。
    echo "[2;7;4m请输入管理员口令:[2;7;0m\c"
    read sel
    if [ "$sel" -ne $pass ]
    then
    echo "\n[2;7;4m口令错误,按任意键继续 [2;7;0m\c"
    read any
    stty echo
    return 1
    else
    echo "[2;7;1m口令正确![2;7;0m\n\n"
    stty echo
    return 0
    fi
    }
    ########################

    #=============================更改路径
    change_to_dir() {
    dir=$1

    [ -f $dir ] && rm -r $dir
    [ ! -d $dir ] && mkdir $dir

    cd $dir
    }
    #==============================end

    #==============================删除逾期数据
    DeleteYqData()
    {
    Num=`ls $1/*.dat | wc -l`
    GeS=`expr $Num - $DAYS`
    [ $GeS -gt 0 ] && {
    Num=0
    for i in `ls $1/*.dat`
    do
    Num=`expr $Num + 1`
    yes | rm $i >/dev/null 2>/dev/null
    [ $? -ne 0 ] && {
    echo "\n[2;7;4m$i 删除失败 ![2;7;0m"
    }
    [ $Num -ge $GeS ] && break
    done
    }
    }
    #=================================结束

    GetYN()
    {
    while echo "\n[2;7;4m$* (Y/N): [2;7;0m\07\c"
    do
    read yn
    case $yn in
    [yY]) return 0;;
    [nN]) return 1;;
    *) echo "\07\07"
    esac
    done
    }
    #================================================
    DateAnalyse()
    {
    value=`echo $1 | awk 'BEGIN { FS="/" }
    {
    Year=$1
    Mon=$2
    Day=$3
    if(Year<1899 || Year >9999 || Mon<1 || Mon >12 || \
    Day<1 || Day >31 || !IsDigit(Mon) || !IsDigit(Year) ||\
    !IsDigit(Day) || !IsYMD(Year,Mon,Day))
    printf("1")
    else printf("0")

    }
    function IsDigit(str)
    {
    for(i=1;i<=length(str);i++)
    {
    bit=substr(str,i,1)
    if(bit<0 || bit>9) return(0)
    }
    return(1)
    }
    function IsLeapYear(YearNum)
    {
    if((int(YearNum%4)==0 && int(YearNum%100)!=0)||int(YearNum%400)==0)
    return(1)
    else return(0)
    }
    function IsYMD(YearNum,MonNum,DayNum)
    {
    DayArr["01"]=31
    if(IsLeapYear(YearNum)) DayArr["02"]=29
    else DayArr["02"]=28
    DayArr["03"]=31
    DayArr["04"]=30
    DayArr["05"]=31
    DayArr["06"]=30
    DayArr["07"]=31
    DayArr["08"]=31
    DayArr["09"]=30
    DayArr["10"]=31
    DayArr["11"]=30
    DayArr["12"]=31

    if(DayNum>0 && DayNum<=DayArr[MonNum])
    return(1)
    else return(0)
    }' `

    return<$value
    }
    #========================================
    GetDate()
    {
    while true
    do
    echo "\n请输入$* (yyyy/mm/dd): \c"
    read date
    len=`expr length "$date"`
    DateAnalyse $date
    [ $? -ne 0 -o $len -ne 10 ] && {
    echo "\07\07\07"
    echo "[2;7;4m日期错误,按回车键重新输入 ...[2;7;0m\c"
    read key
    continue
    ]
    GetDateYN "输入$*为: [2;1;7m $date [2;7;0m, 是否正确"
    [ $? -eq 0 ] && break
    done
    ]
    #=============================================

    GetDateYN()
    {
    while echo "\n\07\07$* (Y/N): \c"
    do
    read yn
    len=`expr length "$yn"`
    [ $len -ne 1 ] && continue;
    case $yn in
    [yY]} return 0;;
    [nN]] return 1;;
    *] echo "\07\c";;
    esac
    done
    }

    #=============================================程序主画面
    main_menu() {
    tput clear
    cat <<MYMENU
    [44m
    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃ 安陆市信用合作联社业务数据U盘备份程序 ┃
    ┃ ┃
    ┃ ========================================================== ┃
    ┃ [1] 储蓄业务数据备份 [2] 储蓄业务数据恢复* ┃
    ┃ [3] 对公业务数据备份 [4] 对公业务数据恢复* ┃
    ┃ --------------------------------------------------------- ┃
    ┃ [5] 查看U盘使用情况 [6] 删除U盘全部数据* ┃
    ┃ [7] 选择删除U盘数据* [8] 列 U 盘 内 容 ┃
    ┃ [9] 自动程序安装 ┃
    ┃ --------------------------------------------------------- ┃
    ┃ [m] 检查密码定期修改情况 [t] 修改系统时间 ┃
    ┃ [q] 退 出 [h] 帮 助 ┃
    ┃ =========================================================== ┃
    ┃Version 1 .0 alhpd@163.com ┃
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛[40m

    日常备份数据保留$DAYS_U天,特殊日备份数据保留$DAYS_H天。过期数据,程序将自动删除。

    MYMENU
    #`date '+%Y年%m月%d日'`
    echo "请选择:\c";
    }
    #=============================================END
    check_privilege() {
    id_num=`id -u `

    if [ id_num -ne 0 ]
    then
    echo "请用超级用户执行此程序!!!!"
    sleep 3
    exit
    fi
    }
    #============================================查看U盘使用情况
    usd_statistics() {
    echo "请稍等......"
    total=`df -kv $DEV |grep $DEV| awk '{print $3}'`
    used=`df -kv $DEV |grep $DEV| awk '{print $4}'`
    free=`df -kv $DEV |grep $DEV| awk '{print $5}'`
    percent=`df -kv $DEV |grep $DEV|awk '{print $6}'`
    echo " U 盘 当 前 使 用 情 况 "
    echo " --------------------------------------------------------------------"
    echo " 总容量(K) 已用(K) 剩余(K) 百分比"
    echo " ${total} ${used} ${free} ${percent}"
    echo " --------------------------------------------------------------------" echo " 按回车键继续......\c"
    read any
    }
    #============================================end

    #============================================删除U盘所有数据
    delete_all() {
    echo "你确定要删除U盘所有数据吗?(y/n)\c"
    cd $MOUNT_POINT
    read opt
    if [ $opt = "y" ]
    then
    rm -rf *
    fi
    }
    #============================================end

    #============================================选择删除U盘数据
    delete_single() {

    cd $MOUNT_POINT
    echo "U盘当前目录:"
    lx
    echo "请输入要删除的目录或者完整文件路径:\c"
    read delete_dir
    if [ -d $delete_dir -o -f $delete_dir ]
    then
    echo "你确定要删除${delete_dir}吗?(y/n)\c"
    read opt
    if [ $opt = "y" ]
    then
    rm -rf $delete_dir
    fi
    else
    echo "<$delete_dir>目录或文件不存在"
    sleep 2
    fi

    }
    #=========================================================
    list_file() {
    #####
    echo "[1] 储蓄业务"
    echo "[2] 对公业务"
    echo "[3] 特殊日备份"
    echo "[4] 全部内容"
    echo "[2;7;4m请选择[1-4]:[2;7;0m\c"
    read sel rest
    [ "$sel" ] || continue
    sel_long=`expr length $sel`
    [ $sel_long -eq 1 ] || continue
    [ $sel -lt 1 -o $sel -gt 4 ]&& break
    #####

    case $sel in
    1)
    [ -d "$MOUNT_POINT/bankstar" ] || {
    echo "没有储蓄业务数据, 任意键返回"
    read any
    return 1
    }
    echo "U盘当前目录:$MOUNT_POINT/bankstar"
    l $MOUNT_POINT/bankstar
    echo "任意键返回"
    read any
    ;;
    2)
    [ -d "$MOUNT_POINT/single" ] || {
    echo "没有对公业务数据, 任意键返回"
    read any
    return 1
    }
    echo "U盘当前目录:$MOUNT_POINT/single"
    l $MOUNT_POINT/single
    echo "任意键返回"
    read any
    ;;
    3)
    [ -d "$MOUNT_POINT/special" ] || {
    echo "没有特殊日备份数据, 任意键返回"
    read any
    return 1
    }
    echo "U盘当前目录:$MOUNT_POINT/special"
    l $MOUNT_POINT/special
    echo "任意键返回"
    read any
    ;;
    4)
    echo "U盘当前目录:"
    l $MOUNT_POINT
    echo "任意键返回"
    read any
    esac
    }

    ##############################
    new_bankstar()
    {
    cd $MOUNT_POINT
    change_to_dir bankstar

    backdate=`head -1 /usr/newbank/etc/cs | awk -F \| '{print $1}'` #获得会计日期 YYYY/MM/DD
    date1=`echo $backdate | awk 'BEGIN { FS="/" }{printf("%s.%s.%s",$1,$2,$3)}'` #转换为:YYYY.MM.DD
    date2=`echo $backdate | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'` #转换为:YYYYMMDD
    ###
    [ -d $cx_backup_dir ] || {
    echo "\n[2;7;1m请先做硬盘备份,按任意键继续...[2;7;0m\c"
    read wait rest
    return
    }
    [ -f $cx_backup_dir/cxData:$date1 ] || {
    echo "\n[2;7;1m请先做硬盘备份,按任意键继续...[2;7;0m\c"
    read wait rest
    return
    }
    cd $cx_backup_dir
    echo "正在复制储蓄备份数据:{$backdate}"
    cp -f cxData:$date1 $MOUNT_POINT/bankstar/$date2.cx
    [ $? -eq 0 ] || { echo "文件拷贝失败!!!"
    sleep 3
    return
    }

    ###########################删除过期30天数据
    echo "\n正在清理过期备份数据。"
    find $MOUNT_POINT/bankstar/ -name "????????.cx" -mtime +30 -print -exec rm {} \;
    #########################################
    echo "[2;7;1m备份成功 ! 按回车键继续...[2;7;0m\c"
    read any
    }

    recover_bankstar()
    {
    GetDate "所恢复数据的日期"
    Date=`echo $date | awk 'BEGIN { FS="/" }{printf("%s%%s",$1,$2,$3)}'`
    BkupFile="$Date.cx"
    [ ! -f $MOUNT_POINT/bankstar/$BkupFile ] && {
    echo "\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c"
    read key
    return 1;
    }
    cd /tmp
    rm bankstar.Z 2>/dev/null
    cd $MOUNT_POINT/bankstar
    [ -f "$Date.cx" ] || { echo "\n $Date.cx(数据)文件不存在!!!"
    read key
    return
    }
    echo "正在拷贝数据"
    cp $Date.cx /tmp/bankstar.Z
    [ $? -eq 0 ] || { rm -r /tmp/bankstar.Z>dev/null 2>/dev/null
    read key
    return
    }
    cd /tmp
    rm -r bankstar 1>/dev/null 2>/dev/null
    uncompress bankstar.Z
    [ $? -eq 0 ] || { rm -r bankstar.Z>/dev/null 2>/dev/null
    read key
    return
    }
    tar xvf bankstar
    [ $? -eq 0 ] || { rm -r bankstar.Z >/dev/null 2>/dev/null
    rm -r bankstar >/dev/null 2>/dev/null
    return
    }
    dbaccess - -<<-End >/dev/null 2>/dev/null
    drop database bankstar;
    End
    dbimport bankstar -l -i ./
    flag=$?
    while [ $flag -ne 0 ]
    do
    GetYN "加载数据库失败 ! 是否重新加载数据库" || return
    dbaccess - - <<-End
    drop database bankstar;
    End
    dbimport bankstar -l -i ./
    flag=$?
    done
    echo "[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c"
    rm -r -f /tmp/bankstar.exp 2>/dev/null
    read key
    return
    }

    #备份对公业务数据

    new_bankacc()
    {
    cd $MOUNT_POINT
    change_to_dir single
    cszd=`dbaccess single -<<-End 2>/dev/null
    select rq from cszd;
    End`
    cszd=`echo $cszd | awk '{print substr($0,4,10)}'`
    date1=`echo $cszd | awk 'BEGIN { FS="/" }{printf("%s.%s.%s",$1,$2,$3)}'` #转换为:YYYY.MM.DD
    date2=`echo $cszd | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'` #转换为:YYYYMMDD
    ###
    [ -d $dg_backup_dir ] || {
    echo "\n[2;7;1m请先做硬盘备份,按任意键继续...[2;7;0m\c"
    read wait rest
    return
    }
    [ -f $dg_backup_dir/dgData:$date1 ] || {
    echo "\n[2;7;1m请先做硬盘备份,按任意键继续...[2;7;0m\c"
    read wait rest
    return
    }
    cd $dg_backup_dir
    echo "正在复制对公业务备份数据:{$cszd}"
    cp -f dgData:$date1 $MOUNT_POINT/single/$date2.dg
    [ $? -eq 0 ] || { echo "文件拷贝失败!!!"
    sleep 3
    return
    }

    ###########################删除过期30天数据
    echo "\n正在清理过期备份数据。"
    find $MOUNT_POINT/single/ -name "????????.dg" -mtime +30 -print -exec rm {} \;
    #########################################
    echo "[2;7;1m备份成功 ! 按回车键继续...[2;7;0m\c"
    read any

    }

    #恢复对公业务数据
    recover_bankacc()
    {
    GetDate "所恢复数据的日期"
    Date=`echo $date | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`
    BkupFile="$Date.dg"
    [ ! -f $MOUNT_POINT/single/$BkupFile ] && {
    echo "\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c"
    read key
    return 1;
    }
    [ -d "/usr/tmp/backup/" ] || mkdir /usr/tmp/backup/
    cd /usr/tmp/backup/
    tar xvf $MOUNT_POINT/single/$BkupFile

    flag=$?
    while [ $flag -ne 0 ]
    do
    GetYN "拷贝失败 ! 是否重新拷贝" || return 1
    done

    yes | uncompress single.Z
    flag=$?
    while [ $flag -ne 0 ]
    do
    GetYN "解压缩失败 ! 是否重新解压缩" || return 1
    uncompress single.Z
    flag=$?
    done
    tar xvf single
    flag=$?
    while [ $flag -ne 0 ]
    do
    GetYN "解数据包失败 ! 是否重新解数据包" || return 1
    tar xvf single
    flag=$?
    done

    dbaccess - - <<-End
    drop database single;
    End
    dbimport single -l -i ./
    flag=$?
    while [ $flag -ne 0 ]
    do
    GetYN "加载数据库失败 ! 是否重新加载数据库" || return 1
    dbaccess - - <<-End
    drop database single;
    End
    dbimport single -l -i ./
    flag=$?
    done
    echo "[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c"
    rm -f single
    read key
    return

    ]

    ##主程序
    trap '' 2 3
    check_privilege #检查权限
    while true
    do
    main_menu
    read opt
    case $opt in
    1]
    #储蓄数据备份
    mount_U && {
    new_bankstar
    unmount_U
    }
    ;;
    2]#储蓄数据恢复
    check_passwd_new && {
    mount_U && {
    recover_bankstar
    unmount_U
    }
    }
    ;;
    3]
    #公存数据备份
    mount_U && {
    new_bankacc
    unmount_U
    }
    ;;
    4]#公存数据恢复
    check_passwd_new && {
    mount_U && {
    recover_bankacc
    unmount_U
    }
    }
    ;;
    5]#U盘使用情况
    mount_U && {
    usd_statistics
    unmount_U
    }
    ;;
    6]#删除U盘全部内容
    check_passwd_new && {
    mount_U && {
    delete_all
    unmount_U
    }
    }
    ;;
    7]#删除U盘部分内容
    check_passwd_new && {
    mount_U && {delete_single
    unmount_U}
    }

    ;;
    8]#列U盘内容
    mount_U && {
    list_file
    unmount_U
    }
    ;;
    9]#特殊备份拷贝
    mount_U && {
    copy_special
    unmount_U
    }
    ;;
    0]#自动安装
    autoinst
    ;;

    h]#帮助文档
    help_me
    ;;
    m]#密码检查
    ./mm
    ;;
    t]
    change_time
    ;;
    q]
    exit

    esac
    done
    posted @ 2005-08-12 16:19 cyberfan 阅读(660) | 评论 (2)编辑 收藏

    这个模板可以说是我第一次在工作当中运用自已所学的电脑知识解决实际问题,虽然比较简陋,但比较有特色,个人感觉还算是比较好用的。



    这个小小的模板是我2002年在陈店信用社任信贷会计时作的,主要是为了简化自已的工作,说得不好听的话就是"偷懒"。当时信用社记总帐还是手工作业,首先分科目将当天发生额记帐,结出余额,然后将当天的所有科目的发生额与余额分借方与贷方汇总打平。当时会计们还在用手工记帐,旁边就是一把算盘----这是最常用的计算工具,常常算上半天,而且会计记总帐要求严,不许有涂改痕迹,否则该科目重记。让人很头痛,而我自九九年开始学电脑,算得上是个"老鸟"了,于是我就做了这个模板,虽然觉得简陋了点,但自已用起来颇得心应手,而且其他信用社也来取经,现在在单位算得上是小有名气了。
    
    
    1.4版功能介绍:
    1、只需输入发生额,即可自动结出余额,自动打平,一目了然,简洁明快。
    2、设置了公式保护密码,若未输入密码,则不能对公式进行修改,有效地防止了误操作对公式的影响。
    3、可灵活设立科目,随时增删科目,方便灵活。
    下载地址:http://www.excelhome.net/Soft/ShowSoft.asp?SoftID=95
    posted @ 2005-08-12 16:14 cyberfan 阅读(410) | 评论 (0)编辑 收藏

    自从2004年从各种渠道我了解了博客后,我对此种交流方式产生了很大的兴趣,于是,我在博客中国上建了我的第一个博客,在不长的时间里,上面的浏览量迅速上升,排名也就不断靠前。但后来的一件事情让我的激情迅速冷确。博客中国进行了改版,期间我有几次均不能更新,而且改版后的界面我不喜欢,所以后来就没在上面添加文章了。我的第二个博客是我自已建立的,利用现成的博客程序创建而成,是基于asp技术的,但由于外国人设计的,有些设计我并不喜欢,但这毕竟是我自已在网上开辟的一块自留地,我还是很重视的。它的网址是:www.cyberfan.5151j.net。我的第三个博客是在msn space上开的,但由于空间限制的缘故,所以在空间满后,就无法更新了。现在的这个博客是我的第四个,这是我所见的功能最全面,最强大的博客,而且这个博客与许多有共同兴趣的人的博客放在一起,让自已溶入社区中,这种方式我很喜欢。

    我的博客风格是许多转帖的技术性文档,当然,我也有许多在学习电脑中的一些感悟和成长中的一些感受。而我所收集的许多技术文章是我在网络生活中,学习中收集起来的,个人感觉很有用,所以放在这个博客上面与大家共同分享。

    posted @ 2005-08-12 15:16 cyberfan 阅读(163) | 评论 (0)编辑 收藏

    仅列出标题