SERVER_USER=456
SERVER_PASSWORD=456
文件内容,文件格式为.ini,需要修改的内容如上示例,需要修改[SERVER_DATA_2]节点下SERVER_USER,SERVER_PASSWORD的值,并且文件所在路径中有空格“D:\Program Files (x86)\”
求大佬帮忙,报酬您说。
系统为win7
¥20,bat存为ANSI/GB2312编码
- <# :
- cls&echo off&cd /d "%~dp0"&set "current=%cd%"
- path %SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%path%
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal \"%~f0\"|Out-String|Invoke-Expression"
- pause
- exit
- #>
- $inifile="D:\Program Files (x86)\xxx.ini";
- if(-not (test-path -literal $inifile)){write-host ('"'+$inifile+'" path error or not exist');exit;}
-
- $codes=@'
- using System;
- using System.Runtime.InteropServices;
- public static class EditINI
- {
- [DllImport("kernel32")]
- public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
- }
- '@;
- Add-Type -TypeDefinition $codes;
-
- [EditINI]::WritePrivateProfileString('SERVER_DATA_2', 'SERVER_USER', '112233', $inifile);
- [EditINI]::WritePrivateProfileString('SERVER_DATA_2', 'SERVER_PASSWORD', '88888', $inifile);
复制代码
|
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
不保留空行.bat
- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "FileOld=1.ini"
- set "FileNew=2.ini"
- set "BeginChange="
- (for /f "tokens=1,2 delims==" %%a in ('type "%FileOld%"') do (
- if "%%b" equ "" (
- set "ThisRow=%%a"
- ) else (
- set "ThisRow=%%a=%%b"
- )
- if "%%a" equ "[SERVER_DATA_2]" (
- echo,!ThisRow!
- set "BeginChange=true"
- ) else if "!BeginChange!" equ "true" (
- if "%%a" equ "SERVER_USER" (
- echo,%%a=bbs.bathome.net
- set "ChangeU=true"
- ) else if "%%a" equ "SERVER_PASSWORD" (
- echo,%%a=www.bathome.net
- set "ChangeP=true"
- ) else (
- echo,!ThisRow!
- )
- if "!ChangeU!" equ "true" (
- if "!ChangeP!" equ "true" (
- set "BeginChange=false"
- )
- )
- ) else (
- echo,!ThisRow!
- )
- ))>"%FileNew%"
复制代码
保留空行.bat
- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "FileOld=1.ini"
- set "FileNew=2.ini"
- set "BeginChange="
- (for /f "tokens=1,2 delims=:" %%i in ('findstr /n .* "%FileOld%"') do (
- if "%%j" equ "" (
- echo,
- ) else (
- for /f "tokens=1,2 delims==" %%a in ("%%j") do (
- if "%%b" equ "" (
- set "ThisRow=%%a"
- ) else (
- set "ThisRow=%%a=%%b"
- )
- if "%%a" equ "[SERVER_DATA_2]" (
- echo,!ThisRow!
- set "BeginChange=true"
- ) else if "!BeginChange!" equ "true" (
- if "%%a" equ "SERVER_USER" (
- echo,%%a=bbs.bathome.net
- set "ChangeU=true"
- ) else if "%%a" equ "SERVER_PASSWORD" (
- echo,%%a=www.bathome.net
- set "ChangeP=true"
- ) else (
- echo,!ThisRow!
- )
- if "!ChangeU!" equ "true" (
- if "!ChangeP!" equ "true" (
- set "BeginChange=false"
- )
- )
- ) else (
- echo,!ThisRow!
- )
- )
- )
- ))>"%FileNew%"
复制代码
批处理读取ini文件内容并修改指定的值
http://bbs.bathome.net/thread-30373-1-1.html
批处理读取ini文件指定小节的内容
http://bbs.bathome.net/thread-57942-1-1.html
本帖最后由 wh7288 于 2023-7-31 08:55 编辑
- set "LocalDir=D:\Program Files(x86)\111.ini"
- set "NewDir=D:\Program Files(x86)\111.ini.txt"
-
- setlocal enabledelayedexpansion
-
- if exist "%LocalDir%" (
-
- for /f "delims=" %%i in ('findstr /N .* %LocalDir%') do (
-
- set "str=%%i"
- set "str=!str:*:=!"
-
- if "!str!" equ "SERVER_USER=456" (
-
- echo SERVER_USER=XXXXXX
-
- ) else if "!str!" equ "SERVER_PASSWORD=456"(
-
- echo SERVER_PASSWORD=XXXXXX
-
- ) else (
-
- echo.!str!
- )
- )>>%NewDir%
- )
-
- endlocal
-
- echo F|xcopy /c /r /y %NewDir% %LocalDir%
-
- del /q %NewDir%
-
- pause
复制代码
|
本帖最后由 77七 于 2023-8-2 14:09 编辑
- @echo off
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "1.ini"') do (
- if defined m (
- (for /f "tokens=1 delims==" %%c in ("%%b") do (
- if "%%c" equ "SERVER_USER" (
- echo %%c=456456456
- ) else if "%%c" equ "SERVER_PASSWORD" (
- echo %%c=456456456
- ) else echo=%%b
- if defined SERVER_USER if defined SERVER_PASSWORD (
- set m=
- )
- )) || echo=%%b
- ) else (
- if "%%b" equ "[SERVER_DATA_2]" (
- set m=1
- )
- echo=%%b
- )
- ))>"2.ini"
- move /y "2.ini" "1.ini"
- pause
复制代码
思维混乱写错了,修改一下
- @echo off
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "1.ini"') do (
- if defined m (
- (for /f "tokens=1 delims==" %%c in ("%%b") do (
- if "%%c" equ "SERVER_USER" (
- echo %%c=456456456
- ) else if "%%c" equ "SERVER_PASSWORD" (
- echo %%c=456456456
- set m=
- ) else echo=%%b
- )) || echo=%%b
- ) else (
- if "%%b" equ "[SERVER_DATA_2]" (
- set m=1
- )
- echo=%%b
- )
- ))>"2.ini"
- move /y "2.ini" "1.ini"
- pause
复制代码
|
本人刚接触多终端管理工作,也是在论坛上找到了很多提高工作效率的解决方案,在此略表谢意,感谢您和团队为新学习者做出的无私奉献.
1.如果是有多处相同的用户名\密码,我一般会增加一个变量,进行控制.
比如说 set "n=0" 如果有相同的server_user server_password, n+1
再对n进行判断,符合条件再输出赋值.
2.我没有理解您的意思,用户名密码不写在代码里,还能写在哪里?
- if "%%a" equ "SERVER_USER" (
- echo,%%a=bbs.bathome.net
- set "ChangeU=true"
- ) else if "%%a" equ "SERVER_PASSWORD" (
- echo,%%a=www.bathome.net
- set "ChangeP=true"
- ) else (
- echo,!ThisRow!
- )
复制代码
按照我的理解,
www.bathome.net
就应该是用户名密码,不也是写在代码里?
请管理员大佬指点,谢谢.
-
批处理专区: BAT CMD DOS
-
-
其他脚本区
-
-
网络资源区
-
-
论坛事务区
-
[收藏此主题]
[关注此主题的新回复]