用for命令就可以了,不用单独提取什么吗?例如:查询结果 追问 提取结果:
谢谢 ---------------------------- 测试:发现没有/f参数时,in中的命令将不会执行而视为文本 for /f %%a in ('whoami') do set username = %%a -++++++++++++++++++++++++++++++++++++++++++++++ 判断多个网卡
-------------------------------------- dos环境下,需要变通一下,用for语句把执行结果赋给环境变量:
实验环境是win10。注意,for语句用在批处理命令中时,需要连用两个%。 也可以用反引号来把需要执行的命令引起来,这时候,需要加参数usebackq:
------------- 我是想判断系统环境变量里面一个名字叫做“xxx”的是否存在,如果存在,我要看他的值跟一个字符串是否相等,相等就不改变他的值,不想等我就改变,如果不存在,我就新增这个名为xxx的系统变量。是这样的,但不一定是path这个特殊的,可能是其他用户添加的系统变量,比如JAVA_HOME 或者其他的。 追答 用BAT的SET命令截取和判断字符是非常蛋疼的,劝你还是想想别的招吧。 追问 其实不复杂,就是怎么得到xxx的值并赋值给a,之后我自有办法判断。这也是为什么我提问题直击重点。 追答
------------------ @echo off&setlocal enabledelayedexpansion for /f "delims==" %%i in (e:\test.txt) do ( set /a n+=1 set !n!=%%i ) set /p a=请输入要提取的行数: cls&echo 你所提取的行为:!%a%! 这是原来的代码使用来显示test.txt文件里的任意一行请,解释一下 delims== pause>nul 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 ------------------ 在cmd窗口下for/? 就可以看到for的帮助信息了。 第一个for语句来说参数 /f 是说明对括号中的e:\test.txt进行逐行分析 eol参数本来是用来指定以某个符号开头的字符当中注释行,并不读取 tokens=1,2 指定只取ip.txt中的第一和第二列,应为取了两列,所以需要两个参数来接收取出来的值。第二个参数由第一个参数决定。假设第一个参数为%%a,那么第二个参数就是%%b,以此类推。 ---------------------------------------------- delims是分割标示属性,=后面的字符作为分割set集中的标记,=后面可跟多个字符,默认为空格或tab制表位等空白内容。 delims==,? 则表示以=,?这三个符号为分隔符 ---------------------------------------- do s syn 貌似是错的,没有s syn 这个命令。 可以是这样:for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do echo %%i %%j 将text文本中每一行=前的所有内容赋值给变量n,若这行中没有=,则把这行所有内容赋值给n,n为从1开始的阿拉伯数字 然后用!%a%!来取出变量中内容。 --------------------- 下面举个例子,假设ip.txt中的内容为 1 2 3 4 5 a 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分别执行以下,应该就会明白了 ---------------------
|
|