Board logo

标题: [文件操作] 求教,批处理替换文档中指定密码 [打印本页]

作者: 花开花落    时间: 2022-7-6 16:20     标题: 求教,批处理替换文档中指定密码

本帖最后由 花开花落 于 2022-7-6 16:34 编辑

批处理将下面文档中,LOCAL PASSWORD=123456替换为LOCAL PASSWORD=abcdef。
主要是USERNAME不能动,而且set设置变量又不能有等号,不会弄了,请高手帮忙。

[ABC]
ORGCODE=123123
AREACODE=0001
POSNO=0001
[SQL SERVER]
LOCAL NAME=127.0.0.1
LOCAL DBNAME=abc_abc
LOCAL USERNAME=123456
LOCAL PASSWORD=123456
POS NAME=127.0.0.1
POS DBNAME=abc_abc
POS USERNAME=123456
POS PASSWORD=123456
AGENT NAME=127.0.0.1
AGENT PORT=111
[DIAL PARAMS]
DIAL_NAME=
DIAL_MODE=1
AUTO_DIAL_MODEM=FALSE
DIAL_USER=123
DIAL_PASSWORD=123
VPN AUTORUN=FALSE
VPN APPNAME=
VPN KILLID=
作者: Batcher    时间: 2022-7-6 18:47

回复 1# 花开花落


test_1.bat
  1. @echo off
  2. cd /d %~dp0
  3. (for /f "tokens=1* delims==" %%i in ('type "1.txt"') do (
  4.     echo %%i | findstr "[" >nul 2>&1
  5.     if errorlevel 1 (
  6.         if "%%j" equ "" (
  7.             echo,%%i=
  8.         ) else if "%%i" equ "LOCAL PASSWORD" (
  9.             echo,%%i=abcdef
  10.         ) else (
  11.             echo,%%i=%%j
  12.         )
  13.     ) else (
  14.         echo,%%i
  15.     )
  16. ))>"2.txt"
复制代码

作者: Batcher    时间: 2022-7-6 18:50

回复 1# 花开花落


test_2.bat
  1. @echo off
  2. cd /d %~dp0
  3. setlocal enabledelayedexpansion
  4. (for /f "tokens=1* delims==" %%i in ('type "1.txt"') do (
  5.     set "str=%%i"
  6.     if "!str:[=!" equ "%%i" (
  7.         if "%%j" equ "" (
  8.             echo,%%i=
  9.         ) else if "%%i" equ "LOCAL PASSWORD" (
  10.             echo,%%i=abcdef
  11.         ) else (
  12.             echo,%%i=%%j
  13.         )
  14.     ) else (
  15.         echo,%%i
  16.     )
  17. ))>"2.txt"
复制代码

作者: Batcher    时间: 2022-7-6 18:52

回复 1# 花开花落


test_3.bat 调用命令行工具 sed.exe
http://bcn.bathome.net/s/tool/index.html?key=sed
  1. sed "s/LOCAL PASSWORD=.*/LOCAL PASSWORD=abcdef/" 1.txt > 2.txt
复制代码

作者: 花开花落    时间: 2022-7-7 08:52

回复 3# Batcher


厉害,感谢感谢。向大佬致敬,学习了!




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