[分享] 基于GRUB4DOS的硬盘工具箱[2012-06-27DP更新]

发表于

自用的硬盘工具箱,可以方便进行系统维护工作。

引导程序WEE+GRUB4DOS。

自带基于MODBOOT的一键恢复程序QGHO,可以随时进行备份恢复系统。

可以方便的进行功能扩展,一切皆有可能。

说明:

  • 默认情况下不显示任何菜单,只有在需要的时候才会显示(按对应的按键,或使用了自定义的菜单接口)
  • 自带MODBOOT和NTBOOT两个组件。
  • 可以通过很简单的方法进行功能扩展。
  • 恢复系统使用的是QGHO(基于MODBOOT)。
  • 启动时如果不按任何按键或按了无效按键则使用默认的方式启动系统(启动第一激活的主分区上)

    如果有存在SYS_MENU.LST文件则会调用该菜单。
    可以通过按指定的按键进入对应的系统。

  • 所以的东西都可以自己修改(当然了前提是你熟悉GRUB4DOS,知道要改的东西。)

  • 因为是使用WEE作为主引导的,安装、修复都很方便,双击一下就搞定了。
  • 一些文件目录说明。
    ADDONS   附加工具目录,下载附加的工具直接解压到该目录下就可以了。
    BIN      一些应用程序,用于修复系统引导。
    MODBOOT  MODBOOT模块程序
    NTBOOT   NTBOOT模块程序
    grub     GRUB4DOS程序目录。
    以上目录一般情况下你可以不必理会它里面的内容。
    PRELOAD.BAT 主引导界面还有快捷键的定义批处理(GRUB4DOS专用)
    preload.fnt  主引导界面使用的字体库。
    SYS_MENU.LST 自定义的默认引导菜单(公开的菜单,自己创建,如果有的话默认就会显示这个菜单内容)

【更新历史】

2014-01-13

  • 删作本页面的部份失效图片

2012-06-27

  • DPMS 驱动更新到1206版
  • GRUB4DOS更新到最新版本。
  • NTBOOT 的NT6启动文件改成WINDOWS 8的BOOTMGR。
  • 绝对PE工具箱更新
  • 更新的文件

2012-03-18

  • DPMS驱动更新

2012-02-28

  • GRUB4DOS更新到最新版本
  • NTBOOT更新(NT6使用了WINDOWS 8的BOOTMGR)
  • 通用PE工具箱V3.0 (AbsolutePE),来源:http://hi.baidu.com/uepon/blog

2012-02-13

  • DPMS驱动更新到1201版。
  • GRUB4DOS版本更新到最新版。
  • NTBOOT更新。

2011-12-12

  • DPMS驱动更新。
  • NTBOOT更新。
  • GRUB4DOS版本升级。

2011-11-06

  • GRUB4DOS更新.
  • BUG修正.
  • 新的启动界面,增加了从USB/CDROM/NET启动的功能.

2011-10-07

  • QGHO修正
  • GRUB4DOS更新
  • 新增支持自动检测多操作系统功能
    按F8就可以显示支持的系统菜单
    按Ctrl+F8重新检测
    比如你硬盘第一个分区安装WINDOWS 2003,第二个分区安装WINDOWS XP
    第三分分区安装WINDOWS 7,启动时按F8可以自动检测到,按菜单选择启动。
    其它说明:
    1. 支持VBOOT启动的VHD/VMDK系统,把这些文件放在放在任意硬盘的VBOOT目录下就可以自动检测
    2. 支持NT6的VHD启动功能。把VHD文件放在任意硬盘的WIN_VHD目录中就可以自动检测.
    3. 以上两个系统的文件名必须以@开头才会自动检测。

2011-09-29

  • QGHO修正调整,
  • NTBOOT更新,支持调用DPMS生成驱动
  • DPMS更新.
  • GRUB4DOS更新到最新版本.

2011-09-19

  • 修正QGHO备份失败的问题.

2011-09-18

  1. 升级GRLDR到最新版,更新WEESETUP程序.
  2. 修正上一个版本QGHO的BUG

2011-09-14

  1. 全新的QGHO一键恢复程序.
  2. 升级GRLDR
  3. 更新DPMS驱动包到最新版本

2011-09-05

  1. QGHO更新,全新设计的QGHO,测试版.
  2. GRLDR升级到最新版本.
  3. addons内置DPMS.BAT脚本.

2011-08-30

  1. 此版本内置的QGHO有问题,不能正常使用,请更新或使用旧版本
    更新NTBOOT/MODBOOT脚本.
    更新GRUB4DOS到最新版本.

2011-08-11

  1. 主程序更新,修正PRELOAD.BAT一个BUG.

2011-08-09

  1. DPMS更新.修正了一个小错误.
  2. GRUB4DOS更新到2011-08-09版.
  3. NTBOOT更新.PE1添加了一个ntpath参数,具体用法请查看tangope.rar里面的#TangoPE.txt.
  4. MODBOOT更新.批处理脚本修改优化.
  5. QGHO一键恢复程序更新.
    重新设计了自定义恢复过程,初次启动时自动查找所有硬盘分区根目录下的GHO文件并列在菜单上.

    可以选择指定分区再次查找(默认找2级目录) ,可以修改支持查找N级目录

    打开MODBOOT\LEVEL3\QGHO.BAT查找Q.S.SUB=2,要找几级就改成2,建议不要太大,否则查找的过程很慢.

  6. 添加了一个新的下载地址.Dbank下载.
  7. 其它小调整 .

2011-08-02

  1. 添加DPMS模块(动态生成SRS驱动),供PE1.X调用.

  2. 更新GRLDR到最新版本.

  3. 添加SRSF6N模块.

  4. 添加模块 MINI TangoPE 2011 Native.

  5. 重新设计了模块菜单加载方法,新的方案只要在第一次使用或删改了模块时才需要重新生成菜单.

不需要每次启动都动态生成菜单,加快了启动速度.

注: 因为使用了新的菜单方案,所以必须更新所有的ADDONS菜单脚本.请重新下载所有模块进行更新.

2011-07-29

  1. 更新GRUB4DOS和WEESETUP.其它小更新.

2011-07-13

  1. 修正一些小问题。

  2. 使用最新版GRUB4DOS。

  3. NTXPPE模块更新。

2011-07-09

  1. 更新NTBOOT到最新版。

  2. 更新MODBOOT到最新版.

  3. QGHO(快速恢复)增强。

支持简单快速恢复。

使用方法: 创建一个QGHO.###到你要恢复到的分区根目录下(必须是激活的主分区)

QGHO.###文件内容指定了GHO文件的路径。

4.GRUB4DOS升级到最新版。

5.支持修改默认的一键恢复密码。

安装方法:

下载SYS_TOOLS.RAR并解压到你电脑的任意磁盘根目录下。注: 解压完成后会多出一个BOOT目录(隐藏的)。
进入BOOT\BIN目录,双击setup_hd0.cmd就行了。

注:如果有杀毒软件可能会有警报,否则不会有什么提示,重启系统即可。如果安装失败可以尝试使用BOOTICE进行安装

BOOTICE 下载地址: http://bbs.wuyou.com/viewthread.php?tid=57675

用BOOTICE进行第二步的安装方法

基本模块 : 直接解压到任意磁盘的根目录下,然后运行BOOT\BIN\setup_hd0.cmd就可以了(也可以自己使用BOOTICE安装WEE引导,使用WEE的默认菜单就行)

SYSTOOLS.RAR是主模块,必须的,其它的是附加模块,解压到ADDONS目录下就行了.

ADDONS目录是存放其它模块的,该目录下的#xxxxx.txt是对应模块的菜单内容。

第一行固定为菜单标题,不需要title,后面的是该菜单要执行的命令。

可以自己参考以上模块自己添加其它模块,也欢迎共享你的模块。

默认是启动第一个激活分区上面的系统,你可以自己写一个菜单文件改名为SYS_MENU.LST放到BOOT目录下,默认就会调用该菜单。

进入一键恢复的密码默认是qgho,在启动时按F9输入正确的密码之后可以修改.

【下载地址】

百度网盘下载

[分享] Windows NT 系列通用启动盘[204-08-31]

发表于

【说明】

  • 本启动盘可以用于直接启动硬盘上的NT系统.可以从任意地方加载这个镜像文件进行启动。
  • 可以通过本镜像启动硬盘上的Windows系统,不依赖硬盘上的系统引导文件.
  • 也可以用于U盘或光盘启动时,直接启动硬盘上的其它系统.
  • 一盘在手,启动无优.

[分享] 自己动手,在WINDOWS系统中搭建GRUB4DOS编译环境[2014-06-25]

发表于

因为经常使用WINDOWS系统,为了方便直接在WINDOWS下搭建。

使用Colinux可以很方便的在WINDOWS中运行一直真实的Linux环境。

好了,废话不多说了,直接开始了。如果想偷懒的话,有提供了可以直接使用的成品下载。

说明: 内容比较乱,只是记录一下整这个的过程(从文件大小也从最初的几个G到整最后的50MB,偷懒的直接下载最新版本就行了,想自己折腾的可以继续看下去(按日期顺序从后往前看)

===========2014-06-25=============

修正使用git下载源码时出现的问题.

cofuse: unsuppored request 6
fatal: cannot symlink '/tmp/tcloop/git-1.6/usr/share/git-core/templates/info/exc
lude' '/mnt/cofs/grub4dos/.git/info/exclude': Function not implemented

下载地址: grub4dos_dev_2014-06-25.7z

===========2013-03-02=============

由于gcc4.7编译出来的和版本启动memtest86有问题,
gcc换成4.8版.
git 换成1.6版.
下载地址1: grub4dos_dev-gcc-4.8

===========2013-01-14=============
更新了一下,使用最新的tinycolinux内核 4.7.3
svn 1.7.5
git 1.8.0
gcc 4.7.2

下载地址1: grub4dos_dev
MD5: F41AF644B3DA6C133A35C45278047C24
===========2012-02-27 ====================
今天roy修正了gcc4.6下编译的问题 ,重新做了一个gcc4.6的版本。
linux核心tinycore4.3
gcc4.6+git1.6+svn1.6+7z+grub4dos-dev
Colinux_TinyCoreLinux_grub4dos_dev.7z
MD5: FA11D60B45FEF4282DD9E0B640F39CF0

===========2012-02-13 ====================

With the new version, you only need three steps to get started.
(1) Download file Colinux_tinyslat_grub4dos_Dev.7z
(2) use 7-ZIP extract to the location you want to install.
(3) after decompression files run quick start.cmd in TinyDev directory

Node: /mnt/cofs ——> e:\colinux

  1. Default cofs directory is e:\colinux so you must create this directory first for use cofs.

    To use a different location you can modifying the file TinyDev\tinyslat\tinyslat.ini and then restart quick start.cmd

  2. You can add a virtual disk for colinux use below steps

    ::create new file sda_1g.fs with 1Gb
    
    fsutil file createnew sda_1g.fs 1073741824
    
    modify tinyslat.ini file add line
    
    sda=tinyslat\sda_1g.fs
    
    and change home=ram0 to home=sda
    

    Restart Colinux and enter

    mke2fs -j /dev/sda

    Restart Colinux again

    Now
    /mnt/sda —> sda_1g.fs

==================2012-02-07==================
结合Tinycore和slatiz优点的版本。使用了tinycore的核心+slatiz软件包管理器。相对完美版本,有以下优点

  • 小巧(解开后才70MB不到,使用MSYS/CYGWIN等至少也得100MB以上吧)。
  • 方便,移动性,直接解压到电脑上就可以运行了(不要放在中文目录下)。
  • 默认开启多终端支持(可以按Alt+Fn切换)。
  • 可以自由添加安装软件(基于tinycore的软件包可自动保存)。使用slatiz的软件包目前不能保存。但是有提供了一个工具可以把tazpkg转为tcz。
  • 可选保存用户配置(默认不保存)
  • 自带的软件包gcc 4.5+svn1.6+git1.7+7z+……。总之下载后就可以直接编译GRUB4DOS相关程序。当然了也可以作为一个桌面linux来使用。

使用方法:

只要三步就可以开始启动 下载-〉解压->执行。
下载
2012-02-08更新cofs权限问题
2012-02-09因为git新的版本不可以在COFS上用git下载源码,所以GIT换成1.6版.
Colinux_tinyslat_grub4dos_Dev.7z
增加软件方法:

  1. tinycore方案(推荐)
    tce-load -wi packname
    默认使用了163的镜像,可以通过修改opt目录下的tcemirror文件改成使用其它镜像。
  2. slatiz方案(备用)
    tczpkg get-install packname
    这个只是作为备用。下载安装的软件不会被保存。
  3. slatiz方案+tinycore
    为了解决有时tinycore的软件源没有提供相应软件,而slatiz有提供时,可以使用该方法。
    首先通过taz2tcz下载slatiz软件并转换为tcz格式。
    taz2tcz packname
    软件安装
    tce-load -i packname
    注意:

    1. 你需要自己处理软件包的依赖关系(depends),可以使用tazpkg depends packname 查看。然后依次下载并转换所有包。
    2. 执行tce-load 时请注意查看上一步最终的软件包名。比如以下是下载xz程序的输出,注意看我们要安装的是xz,最终的名字是xz-4.999.9beta
    tc@box:~$ taz2tcz xz
    xz-4.999.9beta
    Connecting to mirror.slitaz.org (94.23.209.91:80)
    xz-4.999.9beta.tazpk 100% |*******************************| 21096   0:00:00 ETA
    tazpkg(slatiz) to tcz (tinycorelinux) packages convert by chenall
    Please wait....
    42 blocks
    91 blocks
    xz-4.999.9beta converted. you can type tce-load -i xz-4.999.9beta to install.
    tc@box:~$ tce-load -i xz-4.999.9beta
    /etc/sysconfig/tcedir/optional/xz-4.999.9beta.tcz: OK
    

==================2012-02-05==================
因为目前用GCC4.6编译出来的GRLDR无法启动,所以重新整了一个GCC4.4的。

相关下载:

Colinux 主程序 :colinux_mini.7z

系统镜像包: tinycore_colinux_60M_GCC4.4.7z

==================2012-02-04==================

整合了02-03版tinycore的两个版本优点,完善了一下。新的版本有以下优点

  • 占用空间小。
  • 需要的内存也小。
  • 配置灵活,可以选择保存数据。

    目前提供了以下配置文件

  1. tinydev.ini 相当于之前的60M版本,不保存数据。
  2. tinydev_tce_cofs.ini 用户数据保存到tinycore.gz同目录的home目录下使用该配置文件需要先把grubdev.iso解开到同目录下。把配置文件名改为tinydev.ini 之后再启动,会自动建立HOME目录。需要的文件列表如下:tce 目录

    tinycore.gz 文件

    tinydev.ini 配置文件

    启动之后可以使用tce-load命令下载新的软件并且可以保存。如果你对tinycore比较了解,直接添加软件到TCE目录就行了。
    下载地址: tinycore_colinux_60M.7z

==================2012-02-03==================

之前的版本使用了比较完整的Linux来搭建,占用空间比较大,我用tinycorelinux重新定制了一个比较小巧的版本,有兴趣的可以下载试用

使用方法:

  1. 先下载Colinux主程序和系统包。

  2. 在E:新建一个Colinux目录,用于和Linux共享,或方便存放文件。

  3. Colinux解压到非中文目录下,系统包直接解压到Colinux目录中。

  4. 使用Colinux目录下的“快速启动.cmd”来直接启动。

  5. 你也可以安装为服务使用“安装服务.cmd”就行了。

相关文件下载:

  1. Colinux 主程序 colinux_mini直接解压到非中文的目录即可使用
  2. 定制好的系统包(选择其中一个就行了),解压到Colinux安装目录下。1.最小巧只需要60MB空间,缺点:不可保存用户配置完全在内存中运行。tinycore_colinux_dev.7z2.中等,需要160MB,缺点:占用空间比较大,但是可以保存用户配置。

    tinycore_colinux_fs.7z

    3.之前的版本重新打包的文件需要2G+128MB空间

    Debian_colinux.7

    基于tinycore的两个版本所安装的程序都是一样的包含以下主要和相关联的程序。

    GCC 4.6 + GIT + SVN

    区别是,一个是RAM版本,一个非RAM版本。

    建议使用非RAM版本,这样可以保存你的配置文件。默认的COFS目录是E:\COLINUX,你需要先在WINDOWS中建立以上目录。然后就开始操作了

    在linux中使用以下命令就可以编译一个GRUB4DOS

    cd /mnt/cofs
    
    svn co http://grub4dos-chenall.googlecode.com/svn/trunk grub4dos-src
    
    cd grub4dos-src
    
    make
    

    如果你习惯用git也可以用git来下载源码
    ``
    git clone git://github.com/chenall/GRUB4DOS.git
    cd GRUB4DOS
    make
    ```
    其它说明:tinycore默认是超级用户,可以用exit命令退出。用sudo su进入超级用户模式。要增加软件可以使用tce-load命令比如以下命令就可以下载并安装xterm

tce-load -wi xterm

另外已经重定向X的显示到主机。只要主机有安装X SERVER在LINUX下启动X程序就会在主机上显示。

2012-01-19

首先要准备的文件列表

以下软件都在这里http://sourceforge.net/projects/colinux/files/ 可以自己选择其它版本下载

  1. Colinux我选用最新的版本 devel-coLinux-20110807.exe
  2. 用于colinux的linux镜像 Debian-6.0.1-squeeze
    安装Colinux,直接默认安装就行了。

安装完之后,解压Debian-6.0.1的压缩包到Colinux安装目录下。会多出几个文件。

直接运行解压出来的squeeze.bat就可以启动一个debian了。

启动后直接输入用户名root登录

wee需要在gcc 4.5的环境中编译,否则生成的文件太大超过了32KB。如果你不需要编译wee可以略过以下内容。

目前debian的gcc 4.5软件包需要用测试版才能直接安装。所以需要修改软件源,增加一个测试版的源。

============分隔线,增加debian软件源开始======================

修改源列表文件

vi /etc/apt/sources.list

看看里面有没有包含 testing的行,如果有就不用改了。

像这个只有一行

deb http://ftp.debian.org/debian squeeze main

要增加一个testing的源。

懂得VI的可以略过以下内容.开始修改。

首先复制当前行(直输入’yy’即连按两次’y’)

然后直接粘贴(直接按’p’键)现在有两行了

修改其中一行的”squeeze”为”testing”(光标移到’s’处输入’dw’,再按’I’输入”testing “。)

最终就是

deb http://ftp.debian.org/debian squeeze main

deb http://ftp.debian.org/debian testing main

保存并退出(先按一下”Esc”键再输入”:x”回车即可)

好了现在更新一下源信息。

apt-get update

============分隔线,增加debian软件源完成======================

安装GRUB4DOS编译需要的软件包。

注:如果不需要编译wee可以安装gcc-4.3或gcc-4.4会比较稳定。

apt-get install gcc-4.5 autoconf automake make patch git subversion

注:git和subversion是源码管理工具,用于下载源码的,可以安装其中一个就行了。

所有的提示直接按’Y’或回车确认。坐着泡一杯茶再过来,差不多装好了。

如果网络环境很给力的话,几分钟就行了。否则可能得等上半个小时吧。

电脑:俺正在努力下载安装软件,没空陪你了,你自己玩去吧。

………………………………………..

半个小时后。

好像差不多了。。继续工作。

等等,还少了压缩软件,如果你只是玩玩,不要也罢。

apt-get install p7zip-full zip

现在已经万事具备,只欠东风了。

只要下载源码然后就可以编译了。新手请最好看完后面内容再下载编译测试。

下载源码方法:

svn co http://grub4dos-chenall.googlecode.com/svn/trunk grub4dos-src

git clone git://github.com/chenall/grub4dos.git grub4dos-src

编译:

cd grub4dos-src

make

如果你对linux的操作不熟悉,你可以在WINDOWS中修改源码,改完之后再进入LINUX去编译。

colinux支持cofs文件系统,可以和WINDOWS进行文件夹共享。

添加cofs文件系统方法.

在d:新建一个文件夹名字就叫做cofs,用记事本打开squeeze.conf

添加一行

cofs0=d:\cofs

先关闭linux,输入halt就行了。

再次双击squeeze.bat启动debian,登录

输入以下命令挂载cofs

mkdir /mnt/cofs

mount -t cofs cofs0 /mnt/cofs

cd /mnt/cofs

mkdir test

要让它启动时自动挂载可以添加一行内容到/etc/fstab文件中

/dev/cofs0 /mnt/cofs cofs

直接用echo添加就行了,也可以用VI修改

echo /dev/cofs0 /mnt/cofs cofs >> /etc/fstab

如果电脑d:\cofs目录下有生成一个test文件夹,则证明成功挂载

cd /mnt/cofs

svn co http://grub4dos-chenall.googlecode.com/svn/trunk grub4dos-src

cd grub4dos-src

make

以后你就可以在WINDOWS中打开d:\cofs这个目录,修改里面的源码,然后再到linux里面去编译就行了。

懒人可以直接下载绿色包,解压后就可以直接使用。

grub4dos_colinux_debian.7z

[分享]电脑防毒小技巧一则

发表于

现在的电脑病毒越来越多,也越来越厉害,有时真的有点防不胜防。

并且它特别喜欢感染可执行程序文件,因为这样就可以一传十,十传百,快速传播。

这里分享一个小技巧,可以让你的应用程序免受感染(当然只是大部份情况下免疫)

一般情况下病毒都是根据文件的扩展名来确定这个文件是否应用程序。所以可以通过修改扩展名的方式来避免感染。

这个技巧就是通过修改可执行文件的扩展名来避免感染。

缺点是必须添加新的文件关联才可以双击启动这个程序。

附件的批处理文件默认添加了一个exa的扩展名,你可以改成其它的。

执行了这个批处理文件之后,你就可以把你的一些比较重要的应用程序的扩展名改变一下。程序还是可以启动,只是扩展名变了,万一哪天又中毒的,病毒就不会自动找上门来了。

注:可能得重新启动才有效果。

因为系统默认情况下是隐藏应用程序的扩展名的,你可以通过以下方法打开显示。

取消文件夹选项中的隐藏已知文件类型的扩展名就行了。

如果不知道在哪里改的可以直接下载附件,里面有隐藏和显示的注册表。

直接双陆对应的注册表文件就可以了。

@ech off
::添加自定义可执行程序扩展名批处理 by chenall
::http://chenall.net
call :add_ext .exa
goto :eof
:add_ext
if "%1"=="" goto :eof
assoc %1=exefile
reg add "HKCR\%1\PersistentHandler" /ve /d {098f2470-bae0-11cd-b579-08002b30bfeb} /f
reg add HKCR\%1 /v "Content Type" /d "application/x-msdownload" /f
shift
goto :add_ext

卡蝶机

发表于

卡碟機 是一項很具創意的發明。它可以讓你把光碟 ISO 映像檔「燒」到 MicroSD 卡中, 而電腦就會從媒體身份(Media Type)的層面把 MicroSD 卡辨認為一部傳統的 DVD/CD 光碟機。
系統管理員可以把操作系統的安裝光碟內容寫到卡碟機裡的 MicroSD 卡裡,就可以免卻使用外置式光碟機和燒碟的麻煩,方便又環保。

[相关介绍]

●光碟機/讀卡器二合一

●可燒錄ISO 映像檔,模擬USB 光碟機

●隨插即用,免驅動程式

●無光碟機蕊,低耗電,使用壽命長.免用光碟片,無耗材,省錢又環保

更详细的介绍可以点这里查看。

https://docs.google.com/viewer?url=http%3A%2F%2Fjlanlingtech.web-maker.com.tw%2Fupload%2F20111004173405.pdf

 

或这里下载PDF格式

http://hinet.dyndns.org/cardrom_manual.pdf

[一些截图] 注: 图片已失效

  • 初始,还没有烧录ISO的状态
  • 已经烧录好的装态
  • 烧录ISO的界面
  • 烧录时的确认,使用第一种方式时每次都要重新格式化。所以建议选择固定大小。
  • 启动测试界面,注:新的电脑一般按F8或F10都会有选择启动设备的界面,类似如下的。

后记:经过一段时间的测试,效果不错。比如应急时,可以直接写入一个系统安装盘的ISO文件,然后用它来安装系统。使用了固定格式的模式之后可以随意更新ISO文件来改变光驱里面的内容而不影响SD卡里面的内容。

  1. 这个SD卡还可以放到其它读卡器上正常使用,只要不重新分区格式化对虚拟光驱没有影响。
  2. 可以使用多个SD卡,通过更换SD卡来更换光驱内容相当于(换光盘)体积比光盘小多了,呵呵。还是挺方便的。
  3. 以后可能还支持在一张SD卡上写入多个ISO文件。
  4. 虽然是虚拟的,但是对于系统来说这是真实存在的设备,不需要其它设置就可以直接使用。
http://item.taobao.com/item.htm?id=14191084868

将数据输出到Excel的方法

发表于

日常工作中经常需要把某一部份数据导出到EXCEL,通常情况都有软件提供类似方案.

但是这需要手工去打开软件然后导出,不能实现自动化.所以就编写了这个脚本方便实现自动化.

本脚本采用VBSCRIPT语言编写.可以在VB或VBS脚本中使用.

提供了两个过程调用方法rsToExcel,和sqltoexcel.

以下例子就可以把一个文本文档(CSV格式),转为EXCEL

sqlToExcel "TEXT;c:\test.txt","c:\test.xls",null

以下可以从一个SQL数据库中提取数据并输出到excel文件中

sqlToExcel "OLEDB;Provider=SQLOLEDB;data source=SQLSERVER;Initial Catalog=DB;User ID=sa;Password=pass","c:\test.xls","select * from mytable"

注:rstoexcel和sqltoexcel都可以生成EXCEL文件,可以看情况使用.一般情况下使用sqltoexcel就可以了,比较简单.

以下是使用rstoexcel的方法,会麻烦一些

Dim Conn, StrConn, RS, SQL
set Conn = CreateObject("ADODB.Connection")
set RS = CreateObject("ADODB.Recordset")
StrConn = "Provider=SQLOLEDB;data source=SQLSERVER;Initial Catalog=DB;User ID=sa;Password=passwd"
SQL = "select * from mytable"
Conn.Open StrConn
RS.Open SQL,conn,1,1
rstoexcel(RS,"c:\sql.xls")

参考资料: http://support.microsoft.com/kb/247412/zh-cn


Dim Conn, StrConn, RS, SQL
set Conn = CreateObject("ADODB.Connection")
set RS = CreateObject("ADODB.Recordset")
StrConn = "Provider=SQLOLEDB;data source=SQLSERVER;Initial Catalog=DB;User ID=sa;Password=passwd"
SQL = "select * from mytable"
Conn.Open StrConn
RS.Open SQL,conn,1,1
rstoexcel(RS,"c:\sql.xls")

'sqltoexcel "TEXT;c:\11.txt","c:\test.xls",null
'sqltoexcel "URL;http://amupdate.nxt.ru/","c:\url.xls",null
sqltoexcel "OLEDB;" & StrConn ,"c:\sql.xls",SQL

'RS记录导出到EXCEL文件 by chenall http://chenall.net
'使用方法
'rsToExcel Recordset,ExcelFileName
'rsToExcel rs,"c:\test.xls"
sub rsToExcel(rs,file)
    'on error resume next
    dim n,x
    dim xlApp,xlBook,xlSheet
    Set xlApp = CreateObject("Excel.Application")'创建EXCEL对象
    with xlApp.Workbooks.Add().Worksheets(1)'创建新的工作表对像
        n = 0
        for each x in rs.Fields
            n=n+1
            .Cells(1,n) = x.name 
            .Cells(1,n).Font.Bold   =   True '加粗
            .Cells(1,n).HorizontalAlignment=3 '居中
        next
        .Range("A2").CopyFromRecordset rs
        .Range("A1:" & chr(asc("A")+n-1) & rs.recordcount+1).Borders.LineStyle = 1'画表框
        .Range("A1:" & chr(asc("A")+n-1) & rs.recordcount+1).EntireColumn.AutoFit() '自动调整列宽
        xlApp.displayalerts=false'不显示覆盖文件的提示
        .SaveAs file'另存为新的文件名
        xlApp.displayalerts=true'恢复显示
    end with
    xlApp.Quit'退出excel
    set xlApp=nothing
end sub

'任意数据源导出到EXCEL文件 by chenall http://chenall.net
'使用方法,sql参数可以为null
'sqlToExcel conn,ExcelFileName,sql
'sqlToExcel conn,"c:\test.xls",sql
sub sqlToExcel(conn,file,sql)
'    on error resume next
    dim xlApp,xlBook,xlSheet,QryTable
    Set xlApp = CreateObject("Excel.Application")'创建EXCEL对象
    with xlApp.Workbooks.Add().Worksheets(1)'创建新的工作表对像
        if isnull(sql) then
            set QryTable = .QueryTables.add(conn,.Range("A1")) '导入数据
        else
            set QryTable = .QueryTables.add(conn,.Range("A1"),sql) '导入数据
        end if
        QryTable.Refresh false
        xlApp.displayalerts=false'不显示覆盖文件的提示
        .SaveAs file'另存为新的文件名
        xlApp.displayalerts=true'恢复显示
    end with
    xlApp.Quit'退出excel
    set xlApp=nothing
end sub

可以在GRUB4DOS下调用BIOS中断的外部命令

发表于

本程序可以在GRUB4DOS中直接调用BIOS中断和读写指定端口,从而获取一些功能和需要的数据。

可以方便开发人员临时调试某个功能时使用。

当然你对中断资料比较熟悉的话,就可以利用GRUB4DOS配合本程序作出非常酷的效果(比如移动的文字)

使用方法,直接下载程序在GRUB4DOS中执行

参数

  • 写数据到指定端口
    bios outb/outw/outl PORT VALUE
  • 从指定端口读数据
    bios inb/inw/inl
  • 中断调用
    bios int=INT eax=EAX ebx=EBX […]

可使用的所以参数在下面的列表中

unsigned long edi; // as input and output
unsigned long esi; // as input and output
unsigned long ebp; // as input and output
unsigned long esp; // stack pointer, as input
unsigned long ebx; // as input and output
unsigned long edx; // as input and output
unsigned long ecx; // as input and output
unsigned long eax;// as input and output
unsigned long gs; // as input and output
unsigned long fs; // as input and output
unsigned long es; // as input and output
unsigned long ds; // as input and output
unsigned long ss; // stack segment, as input
unsigned long eip; // instruction pointer, as input, 
unsigned long cs; // code segment, as input
unsigned long eflags; // as input and output

效果图在这里(之前的图片放在盛大的服务器上,已经失效)

  1. 直接读写端口演示,分别使用outlinl

    说明:chkpci就是主要使用outlinl获取PCI信息的(具体的在本站文章上面的搜索中输入CHKPCI查看更多介绍)
    结果自己看,后面使用bios调用得到的是第一条PCI的记录。。

    获取pci信息

  2. 调用BIOS中断演示

    未执行前的界面

     这是调用了`INT 10`后的界面,这里稍微介绍一下这个语句的作用
     调用`BIOS`的`int10`中断第6号功能。`AX=0X0601` 即AH=06H,AL=01
     CX=0x050d 即CH=5,CL=0xD(13)
     DX=0X0E20 CH=0xe(14),cl=0x20(32)
     意思就是把屏幕从第5行第13个字符开始到第14行第32个字符结尾的柜形上移一行。
     功能号:06H和07H
     功能:初始化屏幕或滚屏
     入口参数:AH=06H—向上滚屏,07H—向下滚屏
              AL=滚动行数(0—清窗口)
              BH=空白区域的缺省属性
             (CH、CL)=窗口的左上角位置(Y坐标,X坐标)
             (DH、DL)=窗口的右下角位置(Y坐标,X坐标)
     出口参数: 无
    

    调用结果

这个程序只是为了方便测试而编写,使用者需自己注意。

下载地址(带源码):

http://code.google.com/p/grubutils/downloads/list

[分享] 直接在GRUB4DOS环境中修改系统时间

发表于

修改系统日期有很多种方法,比如直接进入BIOS修改,或者进入系统后修改。

如果我想每次开机都改成一个固定的时间,进入系统后自动更新为正确的时间(一般用于过期软件破解)

现在可以直接使用GRUB4DOS来实现自动修改了。

本批处理属于GRUB4DOS高级编程,直接调用BIOS中断来实现修改日期的目的。

BIOS中断调用的实现例子。

用法:

把批处理直接保存为DATE然后使用以下命令就可以了或直接使用C语言编译的版本

显示当前日期

date

修改日期

date 2011-01-01

相关资料:

时钟服务(Clock Service——INT 1AH) 
00H —读取时钟“滴答”计数06H —设置闹钟
01H —设置时钟“滴答”计数07H —闹钟复位
02H —读取时间0AH —读取天数计数
03H —设置时间0BH —设置天数计数
04H —读取日期 80H —设置声音源信息 
05H —设置日期
(1)、功能00H
功能描述:读取时钟“滴答”计数
入口参数:AH=00H
出口参数:AL=00H——未过午夜,否则,表示已过午夜
CX:DX=时钟“滴答”计数
(2)、功能01H
功能描述:设置时钟“滴答”计数
入口参数:AH=01H
CX:DX=时钟“滴答”计数
出口参数:无
(3)、功能02H
功能描述:读取时间
入口参数:AH=02H
出口参数:CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
CF=0——时钟在走,否则,时钟停止
(4)、功能03H
功能描述:设置时间
入口参数:AH=03H
CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
DL=00H——标准时间,否则,夏令时
出口参数:无
(5)、功能04H
功能描述:读取日期
入口参数:AH=04H
出口参数:CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
CF=0——时钟在走,否则,时钟停止
(6)、功能05H
功能描述:设置日期
入口参数:AH=05H
CH=BCD码格式的世纪
CL=BCD码格式的年
DH=BCD码格式的月
DL=BCD码格式的日
出口参数:无
(7)、功能06H
功能描述:设置闹钟
入口参数:AH=06H
CH=BCD码格式的小时
CL=BCD码格式的分钟
DH=BCD码格式的秒
出口参数:CF=0——操作成功,否则,闹钟已设置或时钟已停止
(8)、功能07H
功能描述:闹钟复位
入口参数:AH=07H
出口参数:无
(9)、功能0AH
功能描述:读取天数计数,仅在PS/2有效,在此从略
(10)、功能0BH
功能描述:设置天数计数,仅在PS/2有效,在此从略
(11)、功能80H
功能描述:设置声音源信息
入口参数:AH=80H
AL=声音源
=00H——8253可编程计时器,通道2
=01H——盒式磁带输入
=02H——I/O通道上的"Audio In"
=03H——声音产生芯片
出口参数:无

C语言版的代码在这里

http://code.google.com/p/grubutils/source/browse/trunk/src/date.c

批处理版源码:

!BAT
::datefunc for grub4dos by chenall 2011-10-08
setlocal
debug off
set edi=0x60000
set esi=0x60004
set ebp=0x60008
set esp=0x6000C
set ebx=0x60010
set bx=0x60010
set edx=0x60014
set dx=0x60014
set ecx=0x60018
set cx=0x60018
set eax=0x6001C
set ax=0x6001C
set gs=0x60020
set fs=0x60024
set es=0x60028
set ds=0x6002c
set ss=0x60030
set eip=0x60034
set cs=0x60038
set eflags=0x6003c
::时钟服务(Clock Service——INT 1AH) 
::04H —读取日期
call :BIOS_INT 1A ax=0x400
set date=%*
if exist date && goto :SET_DATE
call Fn.0 0 "%%04X%%04X" *%cx% *%dx% | set date=
echo -n The current date is: %date:~0,4%-%date:~4,2%-%date:~6%
set /p date=Enter the new date: (yyyy-mm-dd)

:SET_DATE  调用BIOS中断修改日期
::05H —设置日期
call :BIOS_INT 1A ax=0x500 cx=0x%date:~0,4% dx=0x%date:~5,2%%%date:~8,2%
exit

:BIOS_INT
::初始化系统参数
echo -n > (md)0x300+1
write %cs% -1
write %ss% -1
write %esp% -1
write %eflags% -1
write %ds% -1
write %es% -1
write %fs% -1
write %gs% -1
write %eip% 0xFFFF%1CD
shift 1

::设置参数
:参数
if "%2"=="" goto :realmode_run
write %%%1% %2
shift 1
shift 1
goto :参数
:realmode_run
call Fn.53 0x60000
exit

[原创] GRUB4DOS 通用模块之文件选择模块[2011-10-01 更新]

发表于

本模块是一个GRUB4DOS的批处理

可用于搜索N级目录下的指定类型文件,并显示于菜单上

这是一个通用模块,可以通过参数直接调用或者通过预先设置变量的方法再调用,

使用方法请参考本站另一贴子

[原创] GRUB4DOS 通用模块之分区选择

2011-08-22 (最终版)

  1. 优化了检测代码.
  2. filpre支持子目录的检测.

2011-08-21 (变化比较大,请注意看更新说明,新的版本使用起来更加灵活.)

  1. 菜单标题自动居中显示
  2. cmd的语法改变

    旧的版本cmd=echo要改成cmd="echo %1"

    在批处理中调用需要使用%%1
    即,需要多一个%1的参数,这个参数用于接收文件参数.可以放在cmd参数的任意位置.
    并且支持类拟%~dpnx1的格式.

  3. 新增filpre参数,指定文件名前辍.

    注意:使用该参数时,subdir参数将不起作用,为了不影响其它情况下的检测速度,该参数只支持单级目录.

2011-08-16 更新:(新的版本处理的速度会慢一些,但精确度比较高,之前的版本会把带扩展名的目录当成文件显示在菜单上)

  1. 添加了一个参数root,指定要从哪个目录开始找.例子:

    root=()/boot

    从只找/BOOT目录下的文件,注:前面的()是必须的,你也可以指定一个磁盘,代表从这个磁盘的这个目录开始查找比如

    root=(hd0,4)/boot

    则先从(hd0,4)/boot目录下查找文件,

    注:如果有带devs参数,必须确保上面的(hd0,4)磁盘有在在devs列表中.

  2. 支持查找无扩展名的文件(之前的版本无扩展名的全部被当成一个子目录对待)

  3. 新的ext参数只查找无扩展名的文件.ext=.会查找无扩展名的文件.
  4. 菜单的注释新增了文件大小的提示(因为新的版本使用cat —locate=0来检测是否一个文件,就顺便把这个也利用上了.)

本模块支持的参数如下

  • m.cmd 指定每个菜单要执行的命令 ( 必须的其它的都是可选参数.)
  • m.title 指定菜单标题
  • m.return 指定返回命令
  • m.menu 指定菜单位置(默认使用(md)0x210+16来存放菜单)
  • m.subdir 指定要查找的目录级数,默认1
  • m.devs 指定要查找的设备(find的参数)
  • m.init 指定菜单的初始化命令
  • m.ext 指定扩展名(用于过滤),多个扩展名用双引号每个扩展名之间用空格分隔
     例: ext=".gho .txt"
    
  • m.root 指定根目录.(第一个被检查的目录)比如(hd0,4)/boot/或(hd0,5)
     注:该参数和m.devs参数配合使用时,将会只查找以上路径下的文件.例子:
     指定m.root=(hd0,4)/boot 或/boot
     只会查找符合条件的磁盘/BOOT目录下的文件.
    
  • m.dirext 是否检测带扩展名的目录,设为任意值即启用,默认禁用,
      除非有必要,否则不建议使用,启动这个参数会使得检测的速度变得很慢.
    
  • m.filpre  指定文件名前辍,过滤非以filpre参数开头的文件.(测试)

以下是使用的效果截图,欢迎反馈BUG或建议.(图片原链接已失效,以后再抽空重新弄)

  1. 当前分区,根目录

  2. 当前分区,3级目录

  3. 当前分区,二级目录,

  4. 二级目录,所有硬盘分区

  5. 2011-08-16更新的版本效果图.

!BAT
setlocal
debug off
checkrange 20110918:-1 read 0x8278 || echo Please use grub4dos-0.4.5b-2011-09-18 or above! && exit 1
if "%1"=="" goto :参数检测
set *
:获取参数
if /i "%1"=="" && goto :参数检测
set m.%~1=%~2
shift 1
shift 1
goto :获取参数

:help
echo Usage: %0 cmd="cmd for each file" OPTIONS..
echo OPTIONS:
echo -e \t title="the main menu title"
echo -e \t menu="pre_set menu file"
echo -e \t subdir=n
echo -e \t devs="find parameters"
echo -e \t return="return cmd"
echo -e \t init="init cmd"
echo -e \t filpre=filepre
echo -e \t ext=fileext
echo -e \t root="root dir. e.g. ()/boot/"
echo -e \n\t for more please visit http://chenall.net
exit

:菜单居中
set title=屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯
set title=%title:~0,%1%%
exit

:参数检测
if not exist m.cmd && goto :help
if not exist m.title && set m.title=Please select a file
if not exist m.menu && set m.menu=(md)0x210+16 && echo -e default 1\ndebug off > (md)0x210+16
if not exist m.subdir && set m.subdir=1
if not exist m.devs && set m.devs=--set-root
if not exist m.root && set m.root=()
echo -e !BAT\necho %m.cmd% \>\> %m.menu% > (md)0x260+4
::获取标题字符数量用于标题居中
set title=%m.title%
set /a title=68-*0x4CB00>>1
call :菜单居中 %title%
::自动生成菜单
set ?_n=1
set m.info=File list menu for grub4dos by chenall.\n\t\t for more information please visit http://chenall.net
if exist m.init && echo %m.init% >> %m.menu%
echo title %title% %m.title% %title%\n\n\t%m.info% >> %m.menu%
echo pause %m.info% >> %m.menu%
echo -e $[0106] %m.info%
echo $[0102] Please wait ...
echo $[1105] Working......
root %m.root%
if exist m.debug echo %@time%
find %m.devs% call :生成文件列表 || echo Unknow Error.
if exist m.debug pause %@time%
echo title 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯 http://chenall.net 屯 2011-08-22 屯\n\n\t%m.info% >> %m.menu%
echo pause %m.info% >> %m.menu%
set ?_n=
if not exist m.return && configfile %m.menu%
echo title   0. Return >>  %m.menu%
echo %m.return%  >> %m.menu%
echo boot >> %m.menu%
configfile %m.menu%
exit

:文件过滤
if "%~1"=="" exit
set tmp=%1
shift
if "%tmp:~-2,1%"=="~" && goto :文件过滤
if "%tmp:~0,1%"=="$" && goto :文件过滤
call :检测文件 %0
goto :文件过滤

:获取文件大小
calc *0x8290>>30 && set size=30GB && exit
calc *0x8290>>20 && set size=20MB && exit
calc *0x8290>>10 && set size=10KB && exit
set size=00B
exit

:检测文件
if exist m.debug1 && echo %~f1
::检测前辍
call Fn.10 "%m.filpre%" "%~n1"
if "%@retval%"=="1" && goto :检测目录
::检测后辍
if exist m.ext || goto :添加菜单
set f.type=%~x1
if not exist f.type set f.type=.
call :过滤 %m.ext% && goto :添加菜单

:检测目录
if %m.subdir%==0 && exit
if exist m.dirext || if "%~x1"=="" || exit
cat --length=0 /%1 && exit
if exist m.debug2 && echo $[0101] %~f1
goto :生成文件列表

:过滤
if "%1"=="" && exit 1
shift
if /i "%0"=="%f.type%" || goto :过滤
exit

:添加菜单
cat --length=0 /%1 || goto :检测目录
call :获取文件大小
if exist m.debug3 && echo $[0102] %~f1
calc *0x8290=*0x8290>>%size:~0,2%
set size=%@retval% %size:~2%
set m=1    %?_n%
echo title %m:~-3%. %~f1\n\n\t~%size% %~f1  >> %m.menu%
(md)0x260+4 %~f1
echo boot >> %m.menu%
set /a ?_n=%?_n%+1
exit

:生成文件列表
setlocal
if "%~1"=="" || root %~f1
set /a m.subdir=%m.subdir%-1
ls | call :文件过滤= || echo
endlocal
exit

[GRUB4DOS] 通用模块之字符串替换

发表于

本程序使用GRUB4DOS批处理编写.

实现了以下功能.

  1. 替换某个变量中指定的字符串.
  2. 删除某个变量中指定的字符串.

使用方法:

把脚本另存为REPLACE

然后直接调用

replace 变量名 字符串1 字符串2 [起始位置]

变量名是GRUB4DOS的一个变量,必须已经存在.因为替换的是这个变量的内容.

字符串1 查找指定字符串

字符串2 找到之后要替换的字符串.

    起始位置是可选的,可以选择从指定字符开始进行替换.起始位置之前的字符不会被改变.默认是0.

如果需要的话可以直接集成到你的批处理中.只要把:replace标签(包含)之后的代码复制过去然后使用

call :replace 来调用就行了.

复制代码请点这里:

!BAT
setlocal
debug off
if exist %1 goto :replace
echo $[0101] Replace module for grub4dos by chenall 2011-08-17
echo $[0101] replace the string $[0103]find $[0101]with string $[0103]replacewith$[0101] in VARIABLE name VAR
echo $[0102] usage:
echo $[0106]     replace VAR find replacewith [start]
echo $[0106]             VAR           a valid VARIABLE name(must defined).
echo $[0106]             find          the string that will be replaced.
echo $[0106]             replacewith   The replacement substring
echo $[0106]             start         Specifies the start. Default is 0.
echo
echo $[0104]  for more please visit $[0105]http://chenall.net/post/grub4dos_replace/
exit

:replace
if not exist %1 exit
echo %%%1%% > (md)0x266+2
set skip=%2
set skip_l=%@retval%
set /a skip=%4
if %skip%==0 || cat (md)0x266+1,%skip% >> (md)0x267+1
:replace_loop
cat --locate=%2 --number=1 --skip=%skip% (md)0x266+1 | set n=
if not exist n goto :replace_ok
if %n%==0 || cat --skip=%skip% (md)0x266+1,%?% >> (md)0x267+1
set /a skip=0x%n%+%skip_l%
echo -n %~3 >> (md)0x267+1
goto :replace_loop
:replace_ok
cat --skip=%skip% (md)0x266+1 >> (md)0x267+1
cat (md)0x267+1 | set %1=
endlocal && set %1=%%%1%%