Board logo

标题: [文本处理] 批处理如何修改 *.ini 文件的指定内容? [打印本页]

作者: luo1987    时间: 2012-6-13 18:36     标题: 批处理如何修改 *.ini 文件的指定内容?

CMD 命批处理修改*.ini文件
修改指定某行以
“pos_last_date=” 开头的行
改成pos_last_date=2012-06-13 (当前日期)
作者: luo1987    时间: 2012-6-13 18:37

pos_last_date= 不确为第几行
作者: weichenxiehou    时间: 2012-6-13 19:07

  1. gawk "BEGIN{\"date/t\"|getline date} {if($0 ~ /^pos_last_date=/) $0=\"pos_last_date=\" substr(date,1,10);print>FILENAME \".new\"}" *.ini
复制代码
因操作系统可能不同,可能需要改变时间格式。
作者: luo1987    时间: 2012-6-14 12:27

好像不行 我比较菜还请多多指导
作者: luo1987    时间: 2012-6-14 12:32

还是这个不是用CMD执行
作者: weichenxiehou    时间: 2012-6-14 13:26

gawk为第三方工具,需要自行下载,论坛里就有。
作者: luo1987    时间: 2012-6-14 13:50

自已找了个脚本但还是不行
请大侠指点下


Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("kmjxc.ini", ForReading)

Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline

intLineFinder = InStr(strNextLine, "pos_last_date")
If intLineFinder <> 0 Then
strNextLine = "pos_last_date="date
End If


strNewFile = strNewFile & strNextLine & vbCrLf
Loop

objTextFile.Close

Set objTextFile = objFSO.OpenTextFile("kmjxc.ini", ForWriting)

objTextFile.WriteLine strNewFile
objTextFile.Close
作者: luo1987    时间: 2012-6-14 14:00

电脑比较不逐个装第三工具
要可以 用另类的方法不
比如用*.BAT 批处理
1、 date /t >X:\date.txt
再用VBS 把date.txt内容替换
作者: luo1987    时间: 2012-6-14 14:30

谢谢 weichenxiehou  
实在不行也就只能逐个安装个第三方工具了
作者: powerbat    时间: 2012-6-14 15:28

修改当前目录下的所有ini文件,保存为*.xxx。检查如无问题可把代码中的“+'.xxx'”去掉,直接修改原文件。
  1. @set @n=0//& dir /a-d/b *.ini |cscript -nologo -e:jscript "%~f0" &pause&exit/b
  2. fso = new ActiveXObject("Scripting.FileSystemObject");
  3. while (!WScript.StdIn.AtEndOfStream) {
  4.   f = WScript.StdIn.ReadLine();
  5.   s = fso.OpenTextFile(f).ReadAll();
  6.   s = s.replace(/^(pos_last_date=)[^\r\n]*/gm, '$1' + today());
  7.   with (fso.OpenTextFile(f+'.xxx', 2, true)) {Write(s); Close();}
  8. }
  9. function today()
  10. {
  11.   var d = new Date();
  12.   return (
  13.     d.getFullYear()
  14.     + '-' + (d.getMonth() + 101).toString().slice(1)
  15.     + '-' + (d.getDate() + 100).toString().slice(1)
  16.   );
  17. }
复制代码

作者: yangfengoo    时间: 2012-6-14 15:59

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.ini) do (
  3.    for /f "tokens=*" %%b in ('type %%a^&del %%a') do (
  4.       set #=%%b
  5.       if "!#:~0,14!"=="pos_last_date=" (echo,pos_last_date=%date:~,10%) else (echo,%%b)
  6.     )>>%%a
  7. )
复制代码

作者: luo1987    时间: 2012-6-15 13:41

谢谢各位高手
已测试OK
作者: luo1987    时间: 2012-6-17 19:38

谢谢 10楼 11楼 的朋友
加问一个问题
批处理做好了 通过共亨复制一了每台电脑
还做了个 创建快捷方式的 VBS脚本
想通过AT运*.VBS
net use \\pc001\D$ /user adminstrator:123456
AT \\PC001\D$\ D:\Program Files\pos_date\lnk.vbs
提示错误




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