[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] [已解决]怎样可以修改批处理脚本最后的数据文本

本帖最后由 hzcxdgioa 于 2013-9-13 23:54 编辑

对批处理自身最后追加的数据信息的更新修改,本人已经找到了解决办法,而且还未使用任何第三方程序,全是win自带的命令集。



一个多账号拨号脚本,可以实现自动修改mac,然后建立拨号(是不同的宽带账号),并且会记录下每次拨号的返回代码,例如691什么的
还会记录下上次拨号时间,现在就是因为每次要更新这些信息,我很希望可以将所有东西都做在一个文件内,目前只能讲所有的账号信息建在另一个文本内,这样复制文件的 时候,就要复制两个,
我希望集成在一个文件内,这样就只需要复制一个文件,就能保留所有当前信息,
有没有办法可以实现,type又不能实现只显示多少行,然后再后面追加,
用echo扫描,所有的变量会被替换,真的好麻烦啊
难道只能做exe吗
exe要实现数据集成在一个文件内也是很麻烦的啊!

文件名称:多账号宽带连接拨号批处理脚本
文件类型:windows 批处理
测试系统:WIN7 sp1
已知问题:xp下出现“命令行参数过多”错误提示
核心功能:多账号切换拨号上网
附加功能:多网卡选择、甄别同类型网卡、账号排序、自动挂断已存在的宽带连接、自行使用已存在的宽带名拨号、无拨号连接可建立临时的拨号连接、记录每个账号的上次拨号状态及显示上次拨号距今时间、
计划功能:账号信息加密存储、所有内容(bat脚本及账号信息)都在一个文件中、
  1. :::::::::::::::::::::::::::::::自动触发UAC::::::::::::::::::::::::::::::
  2. @pushd "%temp%"
  3. @echo.>%systemroot%\testfile.tmp
  4. @if exist %systemroot%\testfile.tmp goto StartWithAdmin
  5. @echo Set UAC = CreateObject^("Shell.Application"^)>getadm.vbs
  6. @echo UAC.ShellExecute "%~0", "%*", "", "runas", 1 >>getadm.vbs
  7. @getadm.vbs
  8. @goto :eof
  9. :StartWithAdmin
  10. @del %systemroot%\testfile.tmp
  11. @if exist getadm.vbs del getadm.vbs
  12. @pushd "%~dp0"
  13. :::::::::::::::::::::::::::::auto touch UAC:::::::::::::::::::::::::::::
  14. @echo off
  15. set 忽略行=340
  16. cls
  17. color 07
  18. set 本文件路径=%0
  19. set "本文件路径=%本文件路径:"=%"
  20. set 电话薄=%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
  21. title %本文件路径%
  22. mode con: cols=90 lines=30
  23. echo 初始化网卡设备列表……
  24. setlocal EnableDelayedExpansion
  25. :扩展延迟
  26. set 网卡=0
  27. rem 扫描所有物理网卡
  28. FOR /F "usebackq eol=  tokens=* delims=:" %%i IN (`reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCi /f "Net" /s /e /d`) DO (
  29. reg query "%%i\Control" 2>nul 1>nul
  30. IF !ERRORLEVEL! EQU 0 (
  31. set /a 网卡=!网卡!+1
  32. set HLM!网卡!=%%i)
  33. )
  34. if /i !网卡!==0 echo.未搜索到物理网卡,立即退出。&pause>nul&goto :eof
  35. rem 确认所有物理网卡类别号
  36. for /l %%a in (1,1,%网卡%) do (
  37. call :z HLM %%a Driver Driver HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
  38. )
  39. rem 获取物理网卡唯一型号
  40. for /l %%a in (1,1,%网卡%) do (
  41. reg query "!HLM%%a!" /e /f "FriendlyName" >nul
  42. IF !ERRORLEVEL! EQU 1 (
  43. call :z Driver %%a DriverDesc FriendlyName
  44. ) else (
  45. call :z HLM %%a FriendlyName FriendlyName
  46. )
  47. )
  48. for /l %%a in (1,1,%网卡%) do (
  49. call :z Driver %%a NetCfgInstanceId NetCfgInstanceId HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\ \Connection
  50. )
  51. for /l %%a in (1,1,%网卡%) do (
  52. call :z NetCfgInstanceId %%a Name Name
  53. )
  54. set 账号=0
  55. echo 初始化账号信息列表……
  56. call :SJC 现在时间
  57. ::实现按账号自动排序
  58. set 列表=%本文件路径%
  59. if exist mac.txt set 列表=mac.txt&set 忽略行=0
  60. FOR /F "usebackq eol=; tokens=1,2,3,4,* delims=_ " %%a IN (`"more +%忽略行% "%列表%" | sort /+14"`) DO (
  61. set /a 账号=!账号!+1
  62. set MAC!账号!=%%a
  63. set 户名!账号!=%%b
  64. set 密码!账号!=%%c
  65. if [%%e]==[] (set 状态!账号!=-) else (set 状态!账号!=%%e)
  66. if not [%%d]==[] (
  67. set /a 差=%现在时间%-%%d
  68. call :SJC1 差 !差!
  69. set 描述!账号!=%%d
  70. set 描述差!账号!=!差!
  71. )
  72. )
  73. if %账号%==0 (
  74. echo 请手动在本文最后按格式正确添加拨号所需信息后再运行&echo.格式为:mac地址_账号_密码(请用下划线相互隔开)&echo.现在退出
  75. pause>nul
  76. goto EOF
  77. )
  78. rem 转换成大写字母
  79. for /l %%r in (1,1,%账号%) do (
  80. for %%i in (A B C D E F) do call set MAC%%r=%%MAC%%r:%%i=%%i%%
  81. )
  82. if %网卡%==1 (
  83. set "uf=[%Name1%]   %FriendlyName1%"
  84. goto oo
  85. )
  86. :123
  87. cls
  88. color 72
  89. for /l %%d in (1,1,%网卡%) do (
  90. set no=    %%d
  91. set nn=[!Name%%d!]                  
  92. echo NO.!no:~-2!:!nn:~0,12!!FriendlyName%%d!
  93. )
  94. set xz=
  95. set /p xz=选择要更改mac的网卡:
  96. if "%xz%"=="" goto 123
  97. if /i %xz% leq 0 goto 123
  98. if /i %xz% gtr %网卡% goto 123
  99. set uf=[!Name%xz%!]   !FriendlyName%xz%!
  100. :oo
  101. cls
  102. color 79
  103. echo  已选择网卡:(输入0重新选择网卡)
  104. echo  %uf%
  105. echo ┏━━━┯━━┯━━━┯━━━━━┯━━━━━━━━┓
  106. echo ┃ 序号 ║状态║ 账号 ║  MAC地址 ║  上次拨号距今  ┃
  107. :显示mac.txt预留的mac地址与账号密码
  108. for /l %%r in (1,1,%账号%) do (
  109. set no=NO.    %%r
  110. set zz=    !状态%%r!
  111. echo ┃!no:~0,3!!no:~-3!║!zz:~-4!║!户名%%r:~0,2!**!户名%%r:~-2!║!MAC%%r:~0,2!******!MAC%%r:~-2!║!描述差%%r:~-18!┃
  112. )
  113. echo ┗━━━┷━━┷━━━┷━━━━━┷━━━━━━━━┛&if not "%xx%"=="" (echo. 上次NO.%xx%:!户名%xx%!) else echo.
  114. set xx=
  115. set /p xx=选择账号:
  116. if "%xx%"=="" goto oo
  117. if "%xx%"=="0" (
  118. if %网卡%==1 (
  119. cls
  120. title 已自动选择唯一网卡,请直接选择账号!
  121. goto oo
  122. )
  123. else (
  124. goto 123)
  125. )
  126. if /i "%xx%" lss "0" goto oo
  127. if /i %xx% gtr %账号% goto oo
  128. cls
  129. color 70
  130. rem 设置地址
  131. FOR /F "usebackq eol=搜 tokens=3 delims= " %%e IN (`reg query "!Driver%xz%!" /e /f "NetworkAddress"`) DO if %%e==!MAC%xx%! goto abc
  132. reg add "!Driver%xz%!" /v NetworkAddress /d !MAC%xx%! /f >nul
  133. ::通过禁用再重启网卡刷新新的mac地址
  134. netsh interface set interface "!Name%xz%!" disable>nul
  135. title 重启网卡……
  136. @ping 127.0.0.1 -n 2 >nul
  137. netsh interface set interface "!Name%xz%!" enable>nul
  138. title 网卡就绪……
  139. @ping 127.0.0.1 -n 2 >nul
  140. ::拨号连接,必须存在.要相同名字的拨号连接,否则出错
  141. :abc
  142. title 开始拨号
  143. rem 如有已建立的拨号连接,则直接使用此宽带连接名拨号
  144. if exist %电话薄% (
  145. rasdial /d>nul
  146. FOR /F "eol= tokens=* delims=" %%a IN (%电话薄%) DO (
  147. set 连接名=%%a
  148. echo 使用已存在的!连接名!进行拨号
  149. set "连接名=!连接名:[=!"
  150. set "连接名=!连接名:]=!"
  151. goto y
  152. )
  153. ) else (
  154. echo 建立临时拨号连接!
  155. call :ff
  156. set 连接名=临时连接
  157. set del=1
  158. goto y
  159. )
  160. :y
  161. rasdial %连接名% !户名%xx%! !密码%xx%! 2>nul 1>nul
  162. set 状态=%ERRORLEVEL%
  163. call :SJC 时间戳
  164. if %del%==1 del /q %电话薄%
  165. set del=
  166. set 描述%xx%=%时间戳%
  167. set 描述差%xx%=%时间戳%
  168. if /i %状态%==0 (set 状态%xx%=OK) else set 状态%xx%=%状态%
  169. if exist mac.txt del mac.txt /q
  170. for /l %%r in (1,1,%账号%) do echo.!MAC%%r!_!户名%%r!_!密码%%r!_!描述%%r!_!状态%%r!>>mac.txt
  171. (echo.拨号结果:  %%状态%xx%%%&echo.&echo.如需断开临时连接,请使用rasdial /d命令)|msg %username% /w
  172. if %状态%==0 exit
  173. title %本文件路径%
  174. goto oo
  175. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  176. :SJC
  177. rem 时间戳计算
  178. for /f "skip=1 tokens=1-9" %%a in ('wmic path win32_utctime ^| findstr .') do set /a m=%%e+9,m%%=12,y=%%i-m/10,t=365*y+y/4-y/100+y/400+(m*306+5)/10+%%a-719469,t=t*86400+%%c*3600+%%d*60+%%g
  179. set %1=%t%
  180. goto :eof
  181. :SJC1
  182. rem 时间戳换算日期时间
  183. set sj=%2
  184. set /a 秒=%sj%%%60
  185. if %秒%==0 (set 秒=    ) else set 秒=  %秒%S
  186. set /a 分=(%sj%%%(60*60))/60
  187. if %分%==0 (set 分=    ) else set 分=  %分%M
  188. set /a 时=%sj%%%(60*60*24)/3600
  189. if %时%==0 (set 时=    ) else set 时=  %时%H
  190. set /a 天=%sj%/86400
  191. if %天%==0 (set 天=    ) else set 天=  %天%D
  192. set %1=%天:~-4%%时:~-4%%分:~-4%%秒:~-4%
  193. :set %1=%天%%时%%分%%秒%
  194. goto :eof
  195. :z
  196. FOR /F "usebackq eol=搜 tokens=2,* delims= " %%e IN (`reg query "%%%1%2%%" /e /f "%3"`) DO set %4%2=%5%%f%6
  197. goto :eof
  198. :ff
  199. echo.[涓存椂杩炴帴]>%电话薄%
  200. echo Encoding=1 >>%电话薄%
  201. echo PBVersion=1 >>%电话薄%
  202. echo Type=5 >>%电话薄%
  203. echo AutoLogon=0 >>%电话薄%
  204. echo UseRasCredentials=0 >>%电话薄%
  205. echo LowDateTime=-53926832 >>%电话薄%
  206. echo HighDateTime=30321816 >>%电话薄%
  207. echo DialParamsUID=5318464 >>%电话薄%
  208. echo Guid=660225EAA62B9146A81472EEB39E96D2 >>%电话薄%
  209. echo VpnStrategy=0 >>%电话薄%
  210. echo ExcludedProtocols=0 >>%电话薄%
  211. echo LcpExtensions=1 >>%电话薄%
  212. echo DataEncryption=8 >>%电话薄%
  213. echo SwCompression=0 >>%电话薄%
  214. echo NegotiateMultilinkAlways=0 >>%电话薄%
  215. echo SkipDoubleDialDialog=0 >>%电话薄%
  216. echo DialMode=0 >>%电话薄%
  217. echo OverridePref=15 >>%电话薄%
  218. echo RedialAttempts=3 >>%电话薄%
  219. echo RedialSeconds=60 >>%电话薄%
  220. echo IdleDisconnectSeconds=0 >>%电话薄%
  221. echo RedialOnLinkFailure=1 >>%电话薄%
  222. echo CallbackMode=0 >>%电话薄%
  223. echo CustomDialDll= >>%电话薄%
  224. echo CustomDialFunc= >>%电话薄%
  225. echo CustomRasDialDll= >>%电话薄%
  226. echo ForceSecureCompartment=0 >>%电话薄%
  227. echo DisableIKENameEkuCheck=0 >>%电话薄%
  228. echo AuthenticateServer=0 >>%电话薄%
  229. echo ShareMsFilePrint=0 >>%电话薄%
  230. echo BindMsNetClient=0 >>%电话薄%
  231. echo SharedPhoneNumbers=0 >>%电话薄%
  232. echo GlobalDeviceSettings=0 >>%电话薄%
  233. echo PrerequisiteEntry= >>%电话薄%
  234. echo PrerequisitePbk= >>%电话薄%
  235. echo PreferredPort=PPPoE4-0 >>%电话薄%
  236. echo PreferredDevice=WAN >>%电话薄%
  237. echo PreferredBps=0 >>%电话薄%
  238. echo PreferredHwFlow=0 >>%电话薄%
  239. echo PreferredProtocol=0 >>%电话薄%
  240. echo PreferredCompression=0 >>%电话薄%
  241. echo PreferredSpeaker=0 >>%电话薄%
  242. echo PreferredMdmProtocol=0 >>%电话薄%
  243. echo PreviewUserPw=1 >>%电话薄%
  244. echo PreviewDomain=0 >>%电话薄%
  245. echo PreviewPhoneNumber=0 >>%电话薄%
  246. echo ShowDialingProgress=1 >>%电话薄%
  247. echo ShowMonitorIconInTaskBar=1 >>%电话薄%
  248. echo CustomAuthKey=0 >>%电话薄%
  249. echo AuthRestrictions=552 >>%电话薄%
  250. echo IpPrioritizeRemote=1 >>%电话薄%
  251. echo IpInterfaceMetric=0 >>%电话薄%
  252. echo IpHeaderCompression=0 >>%电话薄%
  253. echo IpAddress=0.0.0.0 >>%电话薄%
  254. echo IpDnsAddress=8.8.8.8 >>%电话薄%
  255. echo IpDns2Address=114.114.114.114 >>%电话薄%
  256. echo IpWinsAddress=0.0.0.0 >>%电话薄%
  257. echo IpWins2Address=0.0.0.0 >>%电话薄%
  258. echo IpAssign=1 >>%电话薄%
  259. echo IpNameAssign=2 >>%电话薄%
  260. echo IpDnsFlags=0 >>%电话薄%
  261. echo IpNBTFlags=0 >>%电话薄%
  262. echo TcpWindowSize=0 >>%电话薄%
  263. echo UseFlags=3 >>%电话薄%
  264. echo IpSecFlags=0 >>%电话薄%
  265. echo IpDnsSuffix= >>%电话薄%
  266. echo Ipv6Assign=1 >>%电话薄%
  267. echo Ipv6Address=:: >>%电话薄%
  268. echo Ipv6PrefixLength=0 >>%电话薄%
  269. echo Ipv6PrioritizeRemote=1 >>%电话薄%
  270. echo Ipv6InterfaceMetric=0 >>%电话薄%
  271. echo Ipv6NameAssign=1 >>%电话薄%
  272. echo Ipv6DnsAddress=:: >>%电话薄%
  273. echo Ipv6Dns2Address=:: >>%电话薄%
  274. echo Ipv6Prefix=0000000000000000 >>%电话薄%
  275. echo Ipv6InterfaceId=0000000000000000 >>%电话薄%
  276. echo DisableClassBasedDefaultRoute=0 >>%电话薄%
  277. echo DisableMobility=0 >>%电话薄%
  278. echo NetworkOutageTime=0 >>%电话薄%
  279. echo ProvisionType=0 >>%电话薄%
  280. echo PreSharedKey= >>%电话薄%
  281. echo NETCOMPONENTS= >>%电话薄%
  282. echo ms_msclient=0 >>%电话薄%
  283. echo ms_server=0 >>%电话薄%
  284. echo MEDIA=rastapi >>%电话薄%
  285. echo Port=PPPoE4-0 >>%电话薄%
  286. echo Device=WAN >>%电话薄%
  287. echo DEVICE=PPPoE >>%电话薄%
  288. echo PhoneNumber= >>%电话薄%
  289. echo AreaCode= >>%电话薄%
  290. echo CountryCode=0 >>%电话薄%
  291. echo CountryID=0 >>%电话薄%
  292. echo UseDialingRules=0 >>%电话薄%
  293. echo Comment= >>%电话薄%
  294. echo FriendlyName= >>%电话薄%
  295. echo LastSelectedPhone=0 >>%电话薄%
  296. echo PromoteAlternates=0 >>%电话薄%
  297. echo TryNextAlternateOnFail=1 >>%电话薄%
  298. goto :eof
  299. ;__mac地址__ _账号_ _密码_
复制代码

目前只能讲所有的账号信息建在另一个文本内,这样复制文件的 时候,就要复制两个

你说的是第59行的mac.txt吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher

嗯,是的,目前的运行方式是读取批处理最后的账号信息,然后将最新结果保存在一个mac。txt的文件中,因为不好处理,所以只有单独建一个文件,存储和处理更新这些账号信息
我希望能够集成在一个文件中,不过貌似很难整,

TOP

本人已找到解决办法,,,,连自删除后,接续运行本bat的这种矛盾逻辑问题也一并解决了。。。啊哈哈哈哈哈

TOP

返回列表