Board logo

标题: [文本处理] 云更新无盘系统怎么实现农行微信程序修改INI文件里的ID 想做个批处理 [打印本页]

作者: jld95810    时间: 2021-2-25 13:45     标题: 云更新无盘系统怎么实现农行微信程序修改INI文件里的ID 想做个批处理

款台号
COUNTER_NO=12863768
STRUCT_TYPE=01
RESP_ENCRYPTPAN=1
LIST_COUNT=20
SALELIST=1
SILENCERUN=0
LOGINLIST=0
VOIDLIST=1
PRINTLIST=1
REFUNDLIST=1
UNIONPAYFLAG=0
修改里面的这个12863768,我这里一共10台机子每个机子的号都不一样 。大家帮帮忙  谢谢大哥们了
mis.ini这个文件在D盘下面
作者: Batcher    时间: 2021-2-25 14:09

回复 1# jld95810


12863768修改成什么?
另外9台机器的这个数字分别修改成什么?
作者: cutebe    时间: 2021-2-25 18:02

使用前备份原文件及测试!
  1. set id=87654321
  2. sed -i "s/\(COUNTER_NO=\).*$/\1%id%/" "d:\mis.ini"
复制代码
本论坛下载三方工具sed.exe
作者: jld95810    时间: 2021-2-26 21:35

12863768,下个机子就是12863767或者12863766农行一共给了10个号,前面12863是不变的
作者: jld95810    时间: 2021-2-26 21:37

这10号都是固定的
作者: jld95810    时间: 2021-2-26 21:42

大哥能写个完整的,我不太会
作者: Batcher    时间: 2021-2-26 21:51

回复 4# jld95810


    同一个bat脚本需要在10个不同的机器上运行吗?还是在同一个机器上运行生产10个不同的ini文件?
作者: cutebe    时间: 2021-2-27 10:25

各台机子单独运行?还是服务器分发?
若各机运行是靠什么区分,是IP还是MAC?
若服务器分发是直接分发ini,还是分发bat后各机自动运行?
  1. ::根据IP更改配置文件中ID
  2. @echo off
  3. setlocal enableDelayedExpansion
  4. set ip1=192.168.1.20
  5. set ip2=192.168.1.19
  6. set ip3=192.168.1.18
  7. set ip4=192.168.1.17
  8. set ip5=192.168.1.16
  9. set ip6=192.168.1.15
  10. set ip7=192.168.1.14
  11. set ip8=192.168.1.13
  12. set ip9=192.168.1.12
  13. set ip10=192.168.1.11
  14. set "id1=12863768"
  15. set "id2=12863767"
  16. set "id3=12863766"
  17. set "id4=12863765"
  18. set "id5=12863764"
  19. set "id6=12863763"
  20. set "id7=12863762"
  21. set "id8=12863761"
  22. set "id9=12863760"
  23. set "id10=12863759"
  24. ::识别IP
  25. call :getIP pcip
  26. ::set "pcip=192.168.1.18" ::假设
  27. ::更改ID
  28. for /l %%i in (1,1,10)do (
  29. if "%pcip%"=="!ip%%i!" (
  30. sed -i "s/\(COUNTER_NO=\).*$/\1!id%%i!/" "d:\mis.ini"
  31. goto :outfor
  32. )
  33. )
  34. :outfor
  35. pause
  36. goto :eof
  37. :getIP gip 获取IP
  38. 请搜索相应“获取IP”代码
  39. goto :eof
复制代码

作者: jld95810    时间: 2021-2-27 11:44

是10号在10台机子分别运行,一台机子一个号,你看看怎么写,服务器也行,客户端运行也,最好一开机自动识别这个每个机子的自的号
作者: jld95810    时间: 2021-2-27 11:46

最好通过ip和mac来识别
作者: jld95810    时间: 2021-2-27 11:47

客户机一起启动自动运行来识别
作者: flashercs    时间: 2021-2-27 15:46

脚本保存为 a.vbs
  1. Option Explicit
  2. On Error Resume Next
  3. Const conINI = "D:\mis.ini" 'ini路径
  4. Const conNIC = "vEthernet (Default Switch)" '网卡名
  5. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  6. Dim objWbemServices,fso,tsr,tsw,Element,dicNIC_ININO,mac,str
  7. Set dicNIC_ININO = CreateObject("Scripting.Dictionary")
  8. ' MAC地址对应COUNTER_NO
  9. dicNIC_ININO.Add "00:15:5D:62:F7:80","12863768"
  10. dicNIC_ININO.Add "00:15:5D:62:F7:90","12863767"
  11. dicNIC_ININO.Add "00:15:5D:62:F7:72","12863765"
  12. dicNIC_ININO.Add "00:15:5D:62:F7:42","12863764"
  13. dicNIC_ININO.Add "00:15:5D:62:F7:32","12863763"
  14. dicNIC_ININO.Add "00:15:5D:62:F7:02","12863762"
  15. dicNIC_ININO.Add "00:15:5D:62:F7:12","12863761"
  16. dicNIC_ININO.Add "00:15:5D:62:F7:96","12863759"
  17. dicNIC_ININO.Add "00:15:5D:62:F7:98","12863758"
  18. dicNIC_ININO.Add "00:15:5D:62:F7:66","12863757"
  19. Set fso = CreateObject("Scripting.FileSystemObject")
  20. Set objWbemServices = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!//./root/cimv2")
  21. For Each Element In objWbemServices.ExecQuery("Select NetConnectionID,MACAddress From Win32_NetworkAdapter Where NetConnectionID = '" & conNIC & "'")
  22.   mac = Element.MACAddress
  23. Next
  24. ' WScript.Echo "mac='" & mac & "'"
  25. If dicNIC_ININO.Exists(mac) Then
  26.   Set tsr = fso.OpenTextFile(conINI,ForReading,False,vbUseDefault) ' ANSI encoding
  27.   str = tsr.ReadAll
  28.   If Err.Number <> 0 Then MyQuit
  29.   Set tsw = fso.OpenTextFile(conINI,ForWriting,False,vbUseDefault) ' ANSI encoding
  30.   If Err.Number <> 0 Then MyQuit
  31.   With New RegExp
  32.     .Global = False
  33.     .Ignorecase = True
  34.     .Multiline = False
  35.     .Pattern = "(COUNTER_NO\s*=\s*).*"
  36.     tsw.Write(.Replace(str,"$1" & dicNIC_ININO.Item(mac)))
  37.   End With
  38. End If
  39. MyQuit
  40. Sub MyQuit()
  41.   On Error Resume Next
  42.   If IsObject(tsw) Then
  43.     tsw.Close
  44.     Set tsw = Nothing
  45.   End If
  46.   If IsObject(tsr) Then
  47.     tsr.Close
  48.     Set tsr = Nothing
  49.   End If
  50.   Set fso = Nothing
  51.   set dicNIC_ININO = Nothing
  52.   Set objWbemServices = Nothing
  53.   WScript.Quit
  54. End Sub
复制代码

作者: jld95810    时间: 2021-2-27 16:49

大哥直接放到启动项就可以了吧!!!好想启动没有反应,我把我的MAC地址换上去了
作者: cutebe    时间: 2021-2-27 18:01

如果有ftp服务器可考虑:
-----------------------------------------------------------
条件:一、ftp服务器、客户机用固定ip;
二、下载三方sed/wget到系统目录,如%windir%!

步骤:一、ip-id对应表文件保存在ftp服务器上;
二、下载sed.exe和wget.exe两个三方程序,存入%windir%;
三、(先测试,正常后加到启动项里)每台机子上添加bat开机启动;
四、客户机开机运行bat,下载对应表。自动识别ip,根据ip修改id。
作者: flashercs    时间: 2021-2-27 18:47

回复 13# jld95810


    把你改后的内容贴出来。MAC地址要大写
作者: jld95810    时间: 2021-2-28 12:34

4C:CC:6A:42:A5:EC  我就修改了一个机子
作者: jld95810    时间: 2021-2-28 12:36

我双击  a.vbs  他没有反应
dicNIC_ININO.Add "4C:CC:6A:42:A5:EC","12863768"
dicNIC_ININO.Add "00:15:5D:62:F7:90","12863767"
dicNIC_ININO.Add "00:15:5D:62:F7:72","12863765"
dicNIC_ININO.Add "00:15:5D:62:F7:42","12863764"
dicNIC_ININO.Add "00:15:5D:62:F7:32","12863763"
dicNIC_ININO.Add "00:15:5D:62:F7:02","12863762"
dicNIC_ININO.Add "00:15:5D:62:F7:12","12863761"
dicNIC_ININO.Add "00:15:5D:62:F7:96","12863759"
dicNIC_ININO.Add "00:15:5D:62:F7:98","12863758"
dicNIC_ININO.Add "00:15:5D:62:F7:66","12863757"
就修改了第一行
作者: flashercs    时间: 2021-2-28 13:27

回复 17# jld95810

请修改ini路径,网卡名和MAC地址;否则脚本无效。
作者: cutebe    时间: 2021-2-28 14:11

mis-id.ini  //ip-id对照表,存放在ftp服务器上。路径、名称均可修改,但更改后bat中下载处相应也要更改。
  1. #IP ID
  2. #-----------------------
  3. 192.168.1.11 12863768
  4. 192.168.1.12    12863767
  5. 192.168.1.13 12863766
  6. 192.168.1.14 12863765
  7. 192.168.1.15 12863764
  8. 192.168.1.16 12863763
  9. 192.168.1.17 12863762
  10. 192.168.1.18 12863761
  11. 192.168.1.19 12863760
  12. 192.168.1.20 12863759
  13. #=======================
复制代码
内容调整:IP、ID均按实际情况填入。IP在第一列,ID在第二列!

ip-id.bat
  1. ::根据IP更改配置文件中ID //用到三方sed.exe;wget.exe
  2. ::先得到本机IP,再从ftp服务器上取得IP-ID对照表,后修改配置文件中ID。
  3. @echo off
  4. cd/d%~dp0
  5. ::识别本机IP
  6. call :getIP pcip
  7. echo [%pcip%]
  8. ::pause
  9. ::从服务器ftp获取ip-id对应表
  10. wget -q -N "ftp://user:password@192.168.1.200/mis-id.ini"
  11. ::pause
  12. ::更改ID
  13. for /f "tokens=1,2" %%c in ('findstr /c:"%pcip%" mis-id.ini')do (
  14. if "%%c"=="%pcip%" sed -i "s/\(COUNTER_NO=\).*$/\1%%d/" "d:\mis.ini"
  15. )
  16. ::pause
  17. goto :eof
  18. ::====完====
  19. :getIP gip 获取本地IP
  20. setlocal
  21. for /f "tokens=3-6" %%a in ('"netsh interface dump|findstr /i "mask""')do (
  22. for %%i in ("%%a" "%%b" "%%c" "%%d")do if "%%~i" neq "" set %%i
  23. )
  24. if defined address set "ip=%address%"
  25. if defined addr set "ip=%addr%"
  26. endlocal&set "%1=%ip%"
  27. goto :eof
复制代码
代码修改:wget -q -N "ftp://user:password@192.168.1.200/mis-id.ini"
user                                //ftp账户名
password                        //ftp密码
192.168.1.200                //ftp服务器IP
如果ip-id对照表文件mis-id.ini也改了名或路径,这里相应也要修改!

测试步骤:一、先测获取ip是否正常;
二、测试下载mis-id.ini是否成功;
三、最后看看配置文件D:\mis.ini中ID是否更换到位。
作者: jld95810    时间: 2021-3-3 11:35

大哥你看看我修改的对不对,我测试不行
作者: 1073    时间: 2021-3-3 23:59

这是干什么的程序
作者: xczxczxcz    时间: 2021-3-4 15:30

描述清楚,给你弄个 ftp 上传 下载 遍历文件 查找文件




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