返回列表 发帖

[文本处理] 求修改ini文件的批处理

此批处理是处理C:\播放器\setting.ini的内容:
[music]
log_play=201504101624
log_play2=201504102610
open=CD12
open2=CD13
[history]
login0=201504101623
login1=201504101623
[history2]
login0=201504101623
login1=201504101623
[update]
update=201503021105


1.把log_play和log_play2整行删掉
2.把open=CD12和open2=CD13只删掉等号后面的
3.删掉[history]和[history2]包括的内容,就是删掉下面内容
[history]
login0=201504101623
login1=201504101623
[history2]
login0=201504101623
login1=201504101623
@echo off
setlocal enabledelayedexpansion
(for /f "useback tokens=1,2* delims==" %%i in ("C:\播放器\setting.ini") do (
set value=%%i
if not "%%j"=="" (set str=%%i=%%j) else set str=%%i
for %%a in ("log_play" "log_play2") do if "%%i"==%%a set str=
for %%a in ("open" "open2") do if "%%i"==%%a set str=%%i=
for %%a in ("[history]" "[history2]") do if "%%i"==%%a (
set skip=
) else if "!value:~0,1!"=="[" set skip=0
if not "!str!"=="" (
if not "!skip!"=="" echo !str!)
))>$tmp
move /y "$tmp" "C:\播放器\setting.ini"
pauseCOPY
但是这个运行后这项不能删除
[history]
login0=201504101623
login1=201504101623
求修改

如果你发的ini是全部的内容的话,建议你只读取update这个最后一行就行了,其他的直接重新输出
[music]
open=
open2=
[update]


如果还有其他你上面的思路是对的,echo off改成echo on
循环中加pause,单步循环调试,确认!skip!的值是否正确。

TOP

本帖最后由 /zhqsystem/zhq 于 2017-11-13 21:00 编辑
SetLocal EnableDelayedExpansion
call:手动执行 "%~f1"
pause
goto:eof
:手动执行
cd.>"%~f1.new.txt"
for /f "useback delims=" %%i in ("%~f1")do (
echo,%%i
for /f "tokens=1,* delims==" %%j in ("%%i")do (
  set #=
  rem:这里设置判断%%j的值在有效部位设置set "#=0,1,或是空值完成不同处理"便于自动执行并去除下边的设置行以便完成自动[上一行可以去除便于自动处理]
  set/p "#=保留直接回车,删除整行输入1,删除后边所有则输入其他:"
  (if not defined # (echo,%%i
  )else if /i "!#!"=="1" (rem:
  )else (echo,%%j=
  ))>>"%~f1.new.txt"
)
)
goto:eofCOPY
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表