Re pillow:
呵呵,现在已经很少有人咨询 win9x/MSDOS 下批处理的问题了,所以你应该在主题的首帖中注明你所应用的系统环境,以尽量避免大家做无用功。
win9x / msdos 下实现字符串操作,而且要求不使用第三方工具,复杂性将会很高;当然,对应你这个特定的问题,又相对简单了许多,下面提供我的方案。
将下面的代码保存为批处理文件,名为 DisplayName.bat 。程序假定已经得到了注册表的导出数据,文件名为 src.reg (至于 win9x 下注册表的导出方法有很多)生成的目标文件为 dst.txt 。从其中的代码可以看出,软件的 DisplayName 是先存放至变量再输出至文件的,因为变量的控制更为灵活,但是这样也会使 DisplayName 中出现的连续多个空格缩聚为一个空格,解决这个问题的办法是改用 debug ,只是算法会更加复杂一些。
:: DisplayName.bat - Get DisplayName of software from reg file
:: Will Sort - 16:45 2006-1-4 - MSDOS7.10
@echo off
if "%1"=="REG_SZ" goto ParseName
:Init
if exist dst.txt del dst.txt
if not exist src.reg goto end
find "DisplayName" /i < src.reg | find "HKEY" /i /v > _DspName.bat
:MainLoop
set _name=
if not exist _DspName.bat goto Quit
call _DspName.bat
if "%_name%"=="" goto Quit
echo %_name%
echo %_name%>> dst.txt
find "%_name%" /v < _DspName.bat > _DspName.tmp
copy _DspName.tmp _DspName.bat > nul
goto MainLoop
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">arseName
set _name=%2
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">arseLoop
if "%3"=="" goto end
shift
set _name=%_name% %2
goto ParseLoop
:Quit
if exist _DspName.* del _DspName.*
goto end
:end
Last edited by willsort on 2006-1-5 at 19:20 ]