标题: [文件操作] [已解决]批处理如何查找并替换文本里特定字符串中的部分内容 [打印本页]
作者: ygqiang 时间: 2017-3-1 20:21 标题: [已解决]批处理如何查找并替换文本里特定字符串中的部分内容
本帖最后由 ygqiang 于 2017-3-2 09:04 编辑
bat如何搜索并替换ini文件里的userx关键字。不能用第三方exe软件。
其中的x是数字,不确定位数、也不确定是哪个数字。
搜索userx关键字,然后替换成user%y%,y变量是手动输入的数字。
比如ini文件里面,这里的userx就是指user231
config.ini文件内容如下:- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v EnableShade /t REG_SZ /d false /f
- reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v Shell /t REG_SZ /d wscript c:\\client\\start.vbs /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v ServerURL /t REG_SZ /d vdi.aaa.bbb.cn /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client\Security" /v CertCheckMode /t REG_SZ /d 0 /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v NonInteractive /t REG_SZ /d false /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v DomainName /t REG_SZ /d CLOUD /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v UserName /t REG_SZ /d user231 /f
-
- ccc
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v Password /t REG_SZ /d ccc@123 /f
-
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v DesktopLayout /t REG_SZ /d FullScreen /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v connectUSBOnStartup /t REG_SZ /d true /f
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware VDM\Client" /v connectUSBOnInsert /t REG_SZ /d true /f
- reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v connectUSBOnInsert /t REG_SZ /d true /f
- reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v disablecad /t REG_DWORD /d 1 /f
- reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v DisableTaskMgr /t REG_DWORD /d 1 /f
- reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v legalnoticecaption /f
- reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v legalnoticetext /f
- shutdown -r -f -t 1
复制代码
作者: GNU 时间: 2017-3-1 20:33
替换成什么内容?
作者: ygqiang 时间: 2017-3-1 20:34
回复 2# GNU
搜索userx关键字,然后替换成user%y%,y变量是手动输入的数字。
作者: ygqiang 时间: 2017-3-1 20:37
回复 2# GNU
http://www.bathome.net/thread-43341-1-1.html
感觉跟这个帖子的问题。应该有通用的解决方法吧?
作者: GNU 时间: 2017-3-1 20:44
回复 4# ygqiang
是否通用不知道,看你是否有能力看懂代码、修改代码吧。
http://bbs.bathome.net/thread-43341-1-1.html#pid196603
作者: taofan712 时间: 2017-3-1 21:44
本帖最后由 taofan712 于 2017-3-1 23:25 编辑
- @echo off
- set /p usery=手动输入user关键字(如user712)
- findstr /n .* a.ini>temp.ini
- for /f "tokens=1* delims=:" %%a in ('findstr /i "username" temp.ini^|findstr user[0-9]') do (
- set /a tn=%%a
- for %%i in (%%b) do (
- call set userx=%%str%%
- set str=%%i
- )
- )
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%i in (temp.ini) do (
- set /a ln=%%i
- set line=%%j
- if !ln! equ !tn! (
- echo;!line:%userx%=%usery%!
- ) else (
- echo;!line!
- )
- )>>newa.ini
- del /f /q temp.ini
复制代码
新人练手,请求加分鼓励
作者: ygqiang 时间: 2017-3-1 21:55
回复 6# taofan712
多谢。初步测试成功了。
作者: taofan712 时间: 2017-3-1 22:05
回复 7# ygqiang
不跳过空行,论坛已经有很多帖子在用findstr的方法。
这个题我个人觉得难度在于如何获取user231。
作者: ygqiang 时间: 2017-3-1 23:13
回复 8# taofan712
测试后,发现新的newa.ini文件,比a.ini文件,多了几个空行。
感觉del /f /q temp.ini应该放在bat文件最后面。
作者: taofan712 时间: 2017-3-1 23:24
回复 9# ygqiang
是我 疏忽了,我是分成的两个bat在写,边写边测试,最后合起来的时候没检查仔细。del确实应该放最后。。。
出现双倍空行,是因为第二段代码里面用的是temp.ini,里面不必判断空行,所以应该把if = “” 去掉。
已经在6楼改正。
作者: 回家路上 时间: 2017-3-2 08:51
- @if(0)==(0) echo off & set/p "rep=输入替换为:"
- cscript -nologo -e:jscript "%~f0" "%rep%"<"config.ini">"new.ini"&pause&exit/b&@end
- WSH.Echo(WScript.StdIn.ReadALL().replace(/user[0-9]+/g, WScript.Arguments(0)))
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |