一段关于for语句的批处理,知道的请来看下,(50分)
这是个关于4899端口扫描的请给下面这段程序写上注释,最好能解释每一句话,如果解释的好我会加分的,解释的越多我给的分越多,,我将会选出两个优秀的答案,知道的告诉我把,,谢...
这是个关于4899端口扫描的请给下面这段程序写上注释,最好能解释每一句话,如果解释的好我会加分的,解释的越多我给的分越多,,我将会选出两个优秀的答案,知道的告诉我把,,谢谢啦!!!程序代码:@echo off
setlocal
cls
title SYN(正在扫描,请稍后... ...)
for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do s syn %%i %%j 4899 /save
for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%i>>s1.txt
for /f "eol=P tokens=1 delims= " %%i in (s1.txt) do echo %%i>>s2.txt
for /f "eol=S tokens=1 delims= " %%i in (s2.txt) do echo %%i>>ips.txt
del s1.txt
del s2.txt
exit 展开
setlocal
cls
title SYN(正在扫描,请稍后... ...)
for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do s syn %%i %%j 4899 /save
for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%i>>s1.txt
for /f "eol=P tokens=1 delims= " %%i in (s1.txt) do echo %%i>>s2.txt
for /f "eol=S tokens=1 delims= " %%i in (s2.txt) do echo %%i>>ips.txt
del s1.txt
del s2.txt
exit 展开
1个回答
2014-03-20
展开全部
这个其实很简单的,主要就是四个for,而这四个for语句的语法又是一样的,所以坚实其中一个就行了。就拿第一个for语句来说参数/f 是说明对括号中的ip.txt进行逐行分析,eol参数本来是用来指定以某个符号开头的字符当中注释行,并不读取。如果不加这个参数,那么默认是忽略以;开头的行,这里用eol= 将默认的;置为空。tokens=1,2 指定只取ip.txt中的第一和第二列,应为取了两列,所以需要两个参数来接收取出来的值。第二个参数由第一个参数决定。假设第一个参数为%%a,那么第二个参数就是%%b,以此类推。demlims= 是说明以空格为分割符,至于后边的 do s syn 貌似是错的,没有s syn 这个命令。下面举个例子,假设ip.txt中的内容为1 2 3 4 5a a a a a;a a a a ab b b b b那么执行for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do echo %%i %%j 显示的结果为1 2a a:a ab b看到了吗?只显示第一列和第二列,但是如果执行的是for /f "tokens=1,2 delims= " %%i in (ip.txt) do echo %%i %%j,那么显示结果就变为了1 2a ab b以分号开头的aa不见了,这就是因为默认忽略以分号开头的行,假设改为 for /f "eol=a tokens=1,2 delims= " %%i in (ip.txt) do echo %%i %%j,那么显示结果就变为了1 2:a ab b以a开头的那一行就被忽略了。再说那两个参数如果你只用%%i而不用%%j,那么你会发现,只显示第一列,这是因为没有接受第二列的参数至于delims指定分隔符,看这个例子a,b c;d用for /f "delims= " %%i in (ip.txt) do echo %%ifor /f "delims=," %%i in (ip.txt) do echo %%ifor /f "delims= ;" %%i in (ip.txt) do echo %%i分别执行以下,应该就会明白了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询