Board logo

标题: [文本处理] 请教如何用批处理检测文件而不用再安装 [打印本页]

作者: hacbu84    时间: 2009-4-30 19:24     标题: 请教如何用批处理检测文件而不用再安装

我自己做一个DOS工具在未安装之前先检测boot.ini有没有这个字值
如:
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\GRLDR="DOS工具箱"  
如果检测到有这个字值 C:\GRLDR="DOS工具箱"   就不再复制文件复盖.

我的批处理安装是
@echo off
color 0a
Set Prog=           DOS工具箱安装-卸载
Set L1=      ╭══════════════════╮
Set L2=      ║                  ║
Set L3=   ╭══┤%Prog%       ├══╮
Set L4=   ║  ║                  ║  ║
Set L5=   ║  ╰══════════════════╯  ║
Set L6=   ║                        ║
Set L7=   ╟════════════════════════╢
Set L8=   ║               默认启动时间为3分钟              ║
Set L9=   ╰────────────────────────╯
Title %Prog%

Set AddATTR=ATTRIB +S +H +R
Set DelATTR=ATTRIB -S -H -R

Echo.
Echo %L1%
Echo %L2%
Echo %L3%
Echo %L4%
Echo %L5%
Echo %L6%
Echo    ║   请选择您要进行的操作:           ║
Echo %L6%
Echo    ║    [1] 安装  DOS工具箱                   ║
Echo    ║    [2] 卸载  DOS工具箱                    ║
Echo    ║    [3] 退出                          ║
Echo    ║                              ║
Echo %L6%
Echo %L7%

Echo %L8%
Echo %L9%        
Echo.
Set Choice=
Set /P Choice=      请选择您要进行的操作 (1/2/3?) ,然后按回车:
If /I "%Choice%"=="1" Goto Install
If /I "%Choice%"=="2" Goto UnInstall
If /I "%Choice%"=="3" exit


:Install
xcopy boot %Systemdrive%\boot\
copy grldr %Systemdrive%\
copy menu.lst %Systemdrive%\
%DelATTR% %systemdrive%\boot.ini
ECHO %Systemdrive%\GRLDR="DOS工具箱"  >>%Systemdrive%\boot.ini
BOOTCFG /Timeout 3
%AddATTR% %Systemdrive%\boot.ini
%AddATTR% %Systemdrive%\grldr
%AddATTR% %Systemdrive%\menu.lst
%AddATTR% %Systemdrive%\boot
echo 安装完成,按任意键退出……
pause >nul 2>nul
exit

:UnInstall
type %Systemdrive%\boot.ini>%Systemdrive%\boot.bak1
%DelATTR% %Systemdrive%\boot.ini
type %Systemdrive%\boot.bak1|find "%Systemdrive%\GRLDR=" /i /v>%Systemdrive%\boot.ini
%AddATTR% %Systemdrive%\boot.ini
%DelATTR% %Systemdrive%\boot
%DelATTR% %Systemdrive%\grldr
%DelATTR% %Systemdrive%\menu.lst
del %Systemdrive%\boot.bak1
del %Systemdrive%\grldr
del %Systemdrive%\menu.lst
rd %Systemdrive%\boot /s/q
echo 卸载完成,按任意键退出……
pause >nul 2>nul
exit


如何检测到有这个字值 C:\GRLDR="DOS工具箱"   就不再复制文件?
请请高手帮忙写一个。谢谢
作者: yslyxqysl    时间: 2009-4-30 19:47

Find /?
Findstr /?
作者: hacbu84    时间: 2009-4-30 20:06

能不能详细点?我只是半桶水

'Findstr /c:\boot.ini"C:\GRLDR="DOS工具箱" "
echo
???
作者: everest79    时间: 2009-4-30 20:16

bootcfg /query
作者: hacbu84    时间: 2009-4-30 22:15

汗。。能不能写一个直接点的出来?别考小弟了。
能力不行,请多多体谅
作者: Batcher    时间: 2009-4-30 22:38

本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;


Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: hacbu84    时间: 2009-4-30 23:58

算了,看来还是靠自己了。。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2