显示标签为“Shell”的博文。显示所有博文
显示标签为“Shell”的博文。显示所有博文

2007年6月10日星期日

脚本的力量 - 碎片整理与磁盘格式转换

利用命令shell的力量。Use the Power of Command Shells.
学习一种文本操纵语言。Learn a Text Manipulation Language.
不要使用手工流程。Don't Use Manual Procedures.
from《程序员修炼之道》The Pragmatic Programmer
 
 
Windows磁盘碎片整理批处理,传说是WinXP,Win2K,Win2003等NT系统才支持。
将下面代码保存为disk.bat,双击运行即可。
defrag.exe c: -f -v >"d:\defrag_report_c.txt"
defrag.exe d: -f -v >"d:\defrag_report_d.txt"
...
其中 c:,d:等表示你要整理的驱动盘符,详细说明可以Google搜索关键字" windows 碎片整理 命令行",并且在我的Google搜索历史中2007年6月6日的标星记录里都是不错的链接。
 
将Windows磁盘从FAT32转换成NTFS格式,不会格式化磁盘,保留数据(不过最保险的还是备份先)。由于输入了如下命令后,需要立即手动输入对应磁盘卷标名(即你为磁盘驱动器命的名字,打开"我的电脑"即可看到)才会执行转换,所以几乎没有办法写成批处理,不过还好转换工作不是需要特别长的时间,几十秒到几分钟吧。
CONVERT D: /FS:NTFS
关于Google搜索同上,关键字"fat32 转 ntfs 命令"。

2007年6月1日星期五

Resin:JDK版本问题

最初将Resin注册为Windows服务时,JDK版本是1.4.2,一直运行正常。

后来装了JavaEE SDK 1.5,发现Resin运行JSP程序时,总是出现"com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"错误信息,甚至resin-doc(.xtp)都无法正常编译运行。上网一查,了解到是版本问题。

我遇到的问题与Resin无法启动类似,但是我用了不同的方法解决。

很简单,不需要任何重装(当然,注册Resin为Windows服务例外)。

1. 在path中设置好需要的JDK版本。
2. 进入命令行模式,cd到Resin安装目录。
3. 运行如下命令,将Resin Web Server从Windows服务中去除。
> httpd -remove
如果运行正常,继续。
(注:不同的resin版本,httpd可运行程序可能会在不同的子目录。我用的是resin3.0.17 for Windows)
4. 然后运行下面的命令再将Resin注册为Windows服务。
> httpd -install
5. ok。

至于原因,Resin官方网说得很清楚:
If you have moved JDK or Resin manually, you get the error from Resin
because the data Resin once get from the registry and the real location
of the executables doesn't match. Reinstall jdk and, then, reinstall
Resin. That will solve this problem.

事后我有研究了一下注册表,在 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Resin] 中有一个名为"ImagePath"的"可扩充字符串值",值中有一个参数"-java_home "D:\jdk1.5.0""就是设置Resin使用的JDK路径的。( 注意可扩充字符串值导出的并不是字符串,而是十六进制数据,所以导入注册表时需要注意。)