[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[文本处理] 求修改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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "useback tokens=1,2* delims==" %%i in ("C:\播放器\setting.ini") do (
  4. set value=%%i
  5. if not "%%j"=="" (set str=%%i=%%j) else set str=%%i
  6. for %%a in ("log_play" "log_play2") do if "%%i"==%%a set str=
  7. for %%a in ("open" "open2") do if "%%i"==%%a set str=%%i=
  8. for %%a in ("[history]" "[history2]") do if "%%i"==%%a (
  9. set skip=
  10. ) else if "!value:~0,1!"=="[" set skip=0
  11. if not "!str!"=="" (
  12. if not "!skip!"=="" echo !str!)
  13. ))>$tmp
  14. move /y "$tmp" "C:\播放器\setting.ini"
  15. pause
复制代码
但是这个运行后这项不能删除
[history]
login0=201504101623
login1=201504101623
求修改

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

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

TOP

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

TOP

返回列表