Board logo

标题: [文件操作] 求助修改代码:判断文件是否存在、是否含有指定字符串,以及修改文件属性 [打印本页]

作者: xixin    时间: 2016-8-12 10:25     标题: 求助修改代码:判断文件是否存在、是否含有指定字符串,以及修改文件属性

本帖最后由 pcl_test 于 2016-8-12 14:22 编辑

源代码部分:
1存在boot.ini文件,文件内没有"c:\grldr="Start GRUB4DOS"这行,则在末尾追加。

2有c:\grldr="Start GRUB4DOS"这行不做任何操作  
                                          
3不存在boot.ini文件,就新建此文件                              
[boot loader]
[operating systems]
c:\grldr="Start GRUB4DOS"
================================================================
待添加修改部分:
1.存在boot.ini文件时:
  就备份。
  去除只读属性,timeout=0这行值改为5,修改默认属性+r +s +h +a。
  复制 grldr与menu.lst到boot.ini同目录
3.不存在boot.ini文件时:
  修改属性+r +s +h +a
  1. @echo off & setlocal EnableDelayedExpansion
  2. set "file=%systemdrive%\boot.ini"
  3. if exist "%file%" (
  4.     (for /f "delims=" %%a in ('type "%file%"') do (
  5.         set "str=%%a"
  6.         set "str=!str:"=!"
  7.         if /I "!str!"=="c:\grldr=Start GRUB4DOS" set a=1
  8.         echo,%%a
  9.     ))>tmp
  10.     if !a! neq 1 (
  11.         >>tmp echo,c:\grldr="Start GRUB4DOS"
  12.         move tmp "%file%"
  13.     )
  14. ) else (
  15.   (  
  16.     echo,[boot loader]
  17.     echo,[operating systems]
  18.     echo,c:\grldr="Start GRUB4DOS"
  19.   )>"%file%"
  20. )
复制代码

作者: GNU    时间: 2016-8-12 13:28

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set "file=%systemdrive%\boot.ini"
  4. if exist "%file%" (
  5.     (for /f "delims=" %%a in ('type "%file%"') do (
  6.         set "str=%%a"
  7.         set "str=!str:"=!"
  8.         if /I "!str!"=="c:\grldr=Start GRUB4DOS" set a=1
  9.         if "!str!"=="timeout=0" (
  10.             echo timeout=5
  11.         ) else (
  12.             echo,%%a
  13.         )
  14.     ))>tmp
  15.     if !a! neq 1 (
  16.         >>tmp echo,c:\grldr="Start GRUB4DOS"
  17.         attrib -r -s -h -a "%file%"
  18.         move tmp "%file%"
  19.         attrib +r +s +h +a "%file%"
  20.     )
  21. ) else (
  22.     (  
  23.         echo,[boot loader]
  24.         echo,[operating systems]
  25.         echo,c:\grldr="Start GRUB4DOS"
  26.     )>"%file%"
  27.     attrib +r +s +h +a "%file%"
  28. )
复制代码

作者: xixin    时间: 2016-8-12 21:01

本帖最后由 xixin 于 2016-8-12 21:17 编辑

回复 2# GNU


感谢pcl_test修改了标题,这么快得到GNU的帮助,由于太小白了setlocal EnableDelayedExpansion这些部分看了晕半天.
还有两点能否帮忙添加上,存在boot.ini文件时1.先备份.2.复制 grldr与menu.lst到boot.ini同目录(boot.ini存在或不存在阶段都复制)谢谢.谢谢
作者: Batcher    时间: 2016-8-13 21:58

回复 3# xixin


备份的操作比较简单,你自己加上试试看。
  1. copy /y boot.ini boot.ini.bak
复制代码





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