[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]bat代码,如何避免,如果运行多次,会向boot.ini文件里添加多次?

本帖最后由 ygqiang 于 2015-1-8 17:00 编辑

[已解决]bat代码,如何避免,如果运行多次,会向boot.ini文件里添加多次?
因为boot.ini里面,可能还有别的启动选项。所以不能删除/不能替换。只能向里面添加项目。
  1. set timeout=3
  2. if exist c:\boot.ini goto ntldr
  3. exit
  4. :ntldr
  5. bootcfg /timeout %timeout% >nul 2>nul
  6. attrib -s -r -h c:\boot.ini
  7. echo. >>c:\boot.ini
  8. echo C:\wzldr="WDOS工具箱" >>c:\boot.ini
  9. echo C:\WXPE\PELOAD=通用 PE 工具箱 >>c:\boot.ini
  10. attrib +s +r +h c:\boot.ini
复制代码

本帖最后由 ygqiang 于 2015-1-8 12:07 编辑
  1. type C:\boot.ini | find /i "WDOS工具箱" && type C:\boot.ini | find /i "通用 PE 工具箱" && goto :eof
  2. 或者?
  3. findstr /i /r "WDOS工具箱" c:\boot.ini && findstr /i /r "通用 PE 工具箱" c:\boot.ini && goto :EOF
复制代码
如果ini文件里面,这2个启动项目,只有其中1个,如何修改代码?

TOP

本帖最后由 pcl_test 于 2015-1-8 16:35 编辑

回复 1# ygqiang
  1. findstr /i /r "WDOS工具箱" "c:\boot.ini"
  2. set "aa=%errorlevel%"
  3. if "%aa%" neq "0" (echo C:\wzldr="WDOS工具箱">>"c:\boot.ini")
  4. findstr /i /r /c:"通用 PE 工具箱" "c:\boot.ini"
  5. set "bb=%errorlevel%"
  6. if "%bb%" neq "0" (echo C:\WXPE\PELOAD="通用 PE 工具箱">>"c:\boot.ini")
复制代码

TOP

  1. ( findstr /i "WDOS工具箱" c:\boot.ini || findstr /i /c:"通用 PE 工具箱" c:\boot.ini ) >nul && goto :EOF
复制代码
或者
  1. findstr /i /c:"WDOS工具箱" /c:"通用 PE 工具箱" c:\boot.ini >nul && goto :EOF
复制代码
关于 findstr,需要注意以下几点:

  • findstr 默认是使用 /r 参数的,即将搜索字符作为正则表达式。(用 /C 或者 /L 参数则是非正则搜索)
  • 如果要搜索的字符串包含了空格,应该使用 /C 参数,不然空格会将字符串分割成多个关键字。

TOP

或者关于 findstr,需要注意以下几点:

  • findstr 默认是使用 /r 参数的,即将搜索字符作为正则表达式。 ...
    tmplinshi 发表于 2015-1-8 16:41



  •     多谢了。。。

    问题解决了。。
    1. findstr /c:"WDOS工具箱" c:\boot.ini >nul || >>c:\boot.ini echo C:\wzldr="WDOS工具箱"
    2. findstr /c:"通用 PE 工具箱" c:\boot.ini >nul || >>c:\boot.ini echo C:\WXPE\PELOAD=通用 PE 工具箱
    复制代码

    TOP

    返回列表