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

回复 15# kuishilova
把1.vbs、2.vbs……以相应的ip重命名
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. color a
  4. :wait
  5. cls
  6. echo 1、进行配置
  7. echo 2、退出
  8. set a=0
  9. set/p a=请选择:
  10. if %a%==1 goto :startconf
  11. if %a%==2 exit
  12. goto :wait
  13. :startconf
  14. echo 交换机配置结果:>>配置结果.txt
  15. set count=0
  16. for /f "delims=" %%i in (ip.txt) do (
  17. set temp=0
  18. echo 正在扫描 %%i
  19. echo 请等待........
  20. ping -n 1 -w 2 %%i|find "TTL" >nul&&set temp=1
  21. if "!temp!" equ "1" (
  22. echo 扫描%%i完成,正在执行配置工作...
  23. >telnet_tmp.vbs echo set sh=WScript.CreateObject^("WScript.Shell"^)
  24. >>telnet_tmp.vbs echo WScript.Sleep 300
  25. >>telnet_tmp.vbs echo sh.SendKeys "open %%i"
  26. >>telnet_tmp.vbs echo WScript.Sleep 1000
  27. >>telnet_tmp.vbs echo sh.SendKeys "{ENTER}"
  28. >>telnet_tmp.vbs echo WScript.Sleep 1000
  29. start telnet
  30. ping -n 2 127.1 >nul
  31. cscript //nologo telnet_tmp.vbs
  32. ping -n 2 127.1 >nul
  33. cscript //nologo %%i.vbs
  34. del telnet_tmp.vbs
  35. set /a count+=1
  36. echo %%i配置成功
  37. echo %%i配置成功>>配置结果.txt
  38. ) else (
  39. echo %%i无法ping通!
  40. echo %%i配置失败>>配置结果.txt
  41. )
  42. )
  43. echo ----------------结果说明---------------
  44. echo 配置完毕!
  45. echo 共配置可以联通的交换机:%count%台。
  46. echo 配置的结果保存在当前目录的“配置结果.txt”中。
  47. echo ---------------------------------------
  48. echo 按任意键返回主菜单
  49. pause>nul
  50. goto :wait
复制代码

TOP

本帖最后由 kuishilova 于 2015-2-1 00:10 编辑

回复 16# pcl_test
多谢了!
可是,能否做到不使用相应的IP命名?或者再给我一个按顺序提取ip地址出来给vbs重命名的脚本?因为我有至少60ip地址在ip.txt文档内,也就是说我事先已经做好了60组vbs脚本命令,按照1.va、2.vbs、3.vbs。。。。。一直到60.vbs已经命名完成了。那么,如果要使用你之前帮我写出来的代码,那么我就必须要按顺序提取ip.txt文档里面的六十个ip地址作为文件名,一一对应地把六十个vbs文件重命名。

TOP

回复 16# pcl_test


    或者创建一个命令组的文本文档,内容为:
命令组1-----------------
第1行命令组1的内容
第2行命令组1的内容
。。。。
第n行命令组1的内容

命令组2-------------
第1行命令组2的内容
第2行命令组2的内容
。。。。
第n行命令组2的内容
。。。。。。

命令组x-------------
第1行命令组x的内容
第2行命令组x的内容
。。。。
第n行命令组x的内容

在批处理内增加一个计数器,每循环一次,就从命令组文档内提取对应的命令组的所有行,追加进入telnet_tmp.vbs,这样telnet_tmp.vbs就完成了所有的命令,它运行完成以后删除telnet_tmp.vbs,计数器接着就加一、进入下一次循环。我不知道这样做和之前的思路相比,是否跟更复杂?

TOP

[code]
@echo off
setlocal EnableDelayedExpansion
  :wait
  set a=
  set/p a=输入S开始配置:
  if %a%==s goto :startconf
  if %a%==q goto :end
  goto :wait
  :startconf
  echo 交换机配置结果:>>配置结果.txt
  for /f %%i in (ip.txt) do echo 正在扫描 %%i && echo 请等待........&& ping -n 1 -w 2 %%i -n 2|find "TTL">nul && echo 扫描%%i完成,正在执行配置工作... && echo set sh=WScript.CreateObject("WScript.Shell") >telnet_tmp.vbs && echo WScript.Sleep 300 >>telnet_tmp.vbs && echo sh.SendKeys "open %%i" >>telnet_tmp.vbs && echo WScript.Sleep 1000 …… && echo sh.SendKeys "{ENTER}">>telnet_tmp.vbs && echo WScript.Sleep 1000 ……&& start telnet&& set /a count+=1  && cscript //nologo telnet_tmp.vbs && cscript //nologo !count!.vbs && del telnet_tmp.vbs && echo %%i配置成功 && echo %%i配置成功>>配置结果.txt
  
  echo ----------------结果说明---------------
  echo 配置完毕!
  echo 共配置可以联通的交换机:%count%台。
  echo 配置的结果保存在当前目录的“配置结果.txt”中。
  echo ---------------------------------------
  echo 按任意键返回主菜单
  pause>nul
  goto :wait
  :end

TOP

回复 17# kuishilova
重命名什么的很容易的,自己试着把重命名批处理写出来,不要总想着吃现成的

TOP

回复 19# yiwuyun

开启延迟变量  这样能运行吗
  1. set /a count+=1
  2. cscript //nologo !count!.vbs
复制代码

TOP

没试过,如果不能。那只有用call调用了。
set a=!count!.vbs
call :csc !a!
exit /b 0

:csc
cscript //nologo %1
exit /b 0

如果还不行,没法了。

TOP

重命名代码
  1. @echo on
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. for /f "delims=" %%a in ('dir /b *.vbs') do (
  5.     if !n! equ 0 (
  6.         set skip=
  7.     ) else (
  8.         set "skip=skip=!n!"
  9.     )
  10.     call :ChangeName "%%a" "!skip!"
  11.     set /a n+=1
  12. )
  13. goto :eof
  14. :ChangeName
  15. for /f "%~2 delims=" %%b in (ip.txt) do (
  16.     ren %1 "%%b.vbs"
  17.     goto :eof
  18. )
复制代码
回复 20# pcl_test

TOP

回复 19# yiwuyun
多谢!你这个延迟变量的代码,刚才试了一下,成功了一次,失败了一次,暂时没搞明白是哪里出了问题

TOP

回复 19# yiwuyun

昨天运行成功了,可是今天无论如何不行了,运行都第二个的时候就无法调用VBS

TOP

返回列表