ip:port test的批处理脚本

时间:2017-03-29 08:19:23

标签: excel batch-file

我在Excel文件中有数百个IP

System name:    Server name:    Server IP   Target Port:    Environment:
AddressWash  - Crontab jobs/Scripts hostname.com     123.456.789    22  PROD

我想从这个excel端口和IP环境中取出并测试它。如果我能够到达IP,结果应该显示给我。结果应该以一种txt文件格式化。

这甚至可能吗?谢谢。

1 个答案:

答案 0 :(得分:0)

首先使用此脚本(例如保存它像toCSV.bat)。它会将excel文件保存为csv(尽管参数需要是完整路径):

@if (@X)==(@Y) @end /* JScript comment
    @echo off


    cscript //E:JScript //nologo "%~f0" %*

    exit /b %errorlevel%

@if (@X)==(@Y) @end JScript comment */


var ARGS = WScript.Arguments;

var xlCSV = 6;

var objExcel = WScript.CreateObject("Excel.Application");
var objWorkbook = objExcel.Workbooks.Open(ARGS.Item(0));
objExcel.DisplayAlerts = false;
objExcel.Visible = false;

var objWorksheet = objWorkbook.Worksheets(ARGS.Item(1))
objWorksheet.SaveAs( ARGS.Item(2), xlCSV);

objExcel.Quit();

然后检查this。这是最终的脚本(您可以更改结果并将其重定向到文件)。可能您必须更改Excel书籍和表格的名称:

@echo off
setlocal enableDelayedExpansion
call toCsv.bat "%cd%\Book1.xlsx" Sheet1 "%cd%\csvIP.csv"

for /f "usebackq skip=1 tokens=3,4 delims=,"  %%a in ("csvIP.csv") do (
    for /f %%# in ('powershell "$t = New-Object Net.Sockets.TcpClient;try{$t.Connect("""%%~a""", %%~b)}catch{};$t.Connected"') do set "open=%%#"
    echo %%a %%b !open!
)