我想执行一个ping扫描,这是一个powershell命令:
$NET="192.168.111";for($i=1;$i -lt 255;$i++){$command="ping -n 1 -w 100 $NET.$i > nul 2>&1 && echo $NET.$i";start-process -nonewwindow "cmd" -argumentlist "/c $command" -redirectstandardoutput "tmp$i.txt"};cat tmp*.txt > sweep.txt
我需要在cmd中做这件事,我已经尝试过了:
Wihout报价
powershell -c $NET="192.168.111";for($i=1;$i -lt 255;$i++){$command="ping -n 1 -w 100 $NET.$i > nul 2>&1 && echo $NET.$i";start-process -nonewwindow "cmd" -argumentlist "/c $command" -redirectstandardoutput "tmp$i.txt"};cat tmp*.txt > sweep.txt
带1个多臂报价
powershell -c "$NET="192.168.111";for($i=1;$i -lt 255;$i++){$command="ping -n 1 -w 100 $NET.$i > nul 2>&1 && echo $NET.$i";start-process -nonewwindow "cmd" -argumentlist "/c $command" -redirectstandardoutput "tmp$i.txt"};cat tmp*.txt > sweep.txt"
具有3个双quoutes
powershell -c """$NET="192.168.111";for($i=1;$i -lt 255;$i++){$command="ping -n 1 -w 100 $NET.$i > nul 2>&1 && echo $NET.$i";start-process -nonewwindow "cmd" -argumentlist "/c $command" -redirectstandardoutput "tmp$i.txt"};cat tmp*.txt > sweep.txt"""
逃离&;
powershell -c "$NET="192.168.111";for($i=1;$i -lt 255;$i++){$command="ping -n 1 -w 100 $NET.$i > nul 2>&1 && echo $NET.$i";start-process -nonewwindow "cmd" -argumentlist "/c $command" -redirectstandardoutput "tmp$i.txt"};cat tmp*.txt > sweep.txt"
还没有成功。
谢谢!
这对我很有效,我在引号之前使用了反勾号来转义。即使这可以用本机Powershell命令来完成,但由于您要求特定的东西,它就在这里。
$NET="192.168.111"
for($i=1;$i -lt 255;$i++)
{
$command="echo ########### && echo Pinging $NET.$i && ping -n 1 -w 100 $NET.$i 2>&1"
start-process "cmd" -argumentlist "/c `"$command`"" -NoNewWindow -RedirectStandardOutput "tmp$i.txt"
}
while($true)
{
if(-not (Get-Process cmd -EA SilentlyContinue))
{
cat tmp*.txt > sweep.txt
break
}
sleep 5
}
请注意,while
循环将等待所有cmd.exe进程停止,然后将这些文件分解并统一为sweep.txt
。请记住在运行此脚本之前关闭已打开的cmd.exe的任何实例,否则此循环将永远继续:D