CMD管道命令使用
Windows netstat 查看端口、进程占用
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用
假如我们需要确定谁占用了我们的9050端口
1、Windows平台
在windows命令行窗口下执行:
C:/>netstat -aon|findstr "9050" TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2016
看到了吗,端口被进程号为2016的进程占用,继续执行下面命令:
C:/>tasklist|findstr "2016" tor.exe 2016 Console 0 16,064 K
很清楚吧,tor占用了你的端口。
查看文件夹目录结构
tree > list.txt
tree /f >list.txt
输入输出重定向
echo -c -c:不换行,linux下则是-n
输入输出重定向:
每执行一个命名,都会有3个与之相关的文件.标准输入文件,标准输出文件,错误输出文件.
因为unix/linux下把任何一个设备都当作文件看待,所有实际上标准输入文件是键盘,
标准输出和错误输出文件是屏幕.
> 输出重定向
< 输入重定向
<< 输入追加
>> 输入追加
文件描述符:
每一个文件可以用文件描述符来描述,系统提供12个,3-9可以任意定义.0-2系统定义如下:
0 标准输入 键盘
1 标准输出 显示器
2 错误输出 显示器
即可以用0-2代表上面的3个文件.
例如:cmd>file //cmd的输出重定向到file文件
cmd>>file //cmd的输出追加到file中,无则创建
cmd 1>file //把运行cmd的shell的标准输出重定向到file中,1代表标准输出
cmd>file 2>&1 //把cmd的输出重定向到file,同时把2(错误输出)重定向到1(标准输出).
2 > 1 则会把1当成文件,所有把错误定向到1必须使用&1.
cmd 2>file //把错误输出定向到file中
cmd>>file 2>&1 //把错误和cmd输出追加到file中,cmd>>file,追加;2>&1,错误定向到
标准输出,标准输入又追加到file中,所以错误和cmd输出都追加到file
cmd 1>>file 2>&1 //可以把此命令等效于上一个命令
cmdfile2 //cmd的输入是file1,结果输出到file2
cmd<<END //cmd使用标准输入,直到遇到END则退出.END可为任意一个字符
理解:cmd使用默认的标准输入,运行,碰到END,则追加,但是标准输入输出
不能追加,于是出错退出.
注:经试验理解不对,据linux shell编程25章的说法,
这是shell定的语法.可以直接理解成END为分隔符.
cmd<&m //把文件描述符m作为cmd的输入
cmd>&m //把文件描述符m作为cmd的输出
cmd<&- //关闭标准输入.
!!!注意:
1. 输入输出定向符前面不要加空格,否则容易出意想不到的问题
2. 0 1 2不能使用>>或<<定向符,例: 2>>&1 出错
for循环命令
基本用法:
格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令
作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。
注意:在批处理文件中使用 FOR命令时,指定变量请使用%%variable,而不要用%variable。变量名称是区分大小写的,所以 %i 不同于 %I.
关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f
实例
咱们用一个实例来熟悉下for循环的用法。将ports-desc.txt中的端口号取出来存入另一个文件ports.txt文件中,代码:
ports-desc.txt内容如下:
1 传输控制协议端口服务多路开关选择器 2 compressnet 管理实用程序 3 压缩进程 5 远程作业登录 ...
首先 新建一个bat文件test.bat(在cmd窗口直接输入名称运行),获取文件每行的信息,用到一个循环:
@echo offfor /f "tokens=1* delims=:" %%i in ('findstr /n ".*" basic_port.txt') do ( echo %%j))pause打印:1:1 传输控制协议端口服务多路开关选择器 2:2 compressnet 管理实用程序 3:3 压缩进程 4:5 远程作业登录 ...
因为使用了/n参数,所以每行首有序列号及冒号。这里详解下:
('findstr /n ".*" basic_port.txt') 会返回多行信息类似数组,for循环遍历每行字符串
delims=: 代表将每行字符串利用=后的字符进行分割
tokens=1* 1表示取每行分割后的第一列(可以理解为数组第一个arr[0])并存入变量%%i,后面所有的元素存入$$j()
以第一行为例,%%i等于1;$$j等于“1 传输控制协议端口服务多路开关选择器”
其次,遍历每行字符串,因此需要用到第二个循环,并且嵌套在其中:
第二个循环命令中,需要使用第一个循环%%j(即每行字符串)的值,必须使用变量的方式。而一般变量表示为%变量%,这里比较特殊,需要用!变量!的方式。像这样:
%%k in ("!string!") do(code...)
现在代码为:
@echo offfor /f "tokens=1* delims=:" %%i in ('findstr /n ".*" basic_port.txt') do ( set set string=%%j for /f "tokens=1* delims= " %%k in ("!string!") do ( echo %%k ))pause打印:!string!!string!!string!!string!!string!...
运行后,结果不对。度娘后发现嵌套循环的问题:变量延迟。需要在第一行加上“setlocal enabledelayedexpansion”
加上后:
@echo off&;setlocal enabledelayedexpansionfor /f "tokens=1* delims=:" %%i in ('findstr /n "^[0-9]* " basic_port.txt') do ( set string=%%j for /f "tokens=1* delims= " %%k in ("!string!") do ( echo %%k ))pause
现在就可以把数据一条条存入目标文件ports.txt文件中:
最后代码:
@echo off&;setlocal enabledelayedexpansionfor /f "tokens=1* delims=:" %%i in ('findstr /n "^[0-9]* " basic_port.txt') do ( set string=%%j for /f "tokens=1* delims= " %%k in ("!string!") do ( %%k>>ports.txt ))pause
>> 表示将数据追加到文件中。首次会新建这个文件。
> 一个时表示直接覆盖
CMD管道命令使用的更多相关文章
- CMD命令行管道命令
一.什么是管道命令 管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息. 如 dir 命令会显示目录下所有文件夹和文件,可以使用管道命令| findstr "" 将di ...
- windows下cmd组合命令和管道命令
组合命令:&& 管道命令:|
- windows CMD常用命令
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- [20180627]测试bbed是否支持管道命令.txt
[20180627]测试bbed是否支持管道命令.txt --//测试bbed是否支持管道命令.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING ...
- Windows CMD常用命令大全 运行命令
http://blog.163.com/lixunhuan@126/blog/static/122060620075124142658/ CMD命令大全 net use \\ip\ipc$ " ...
- 【cmd】cmd常用命令
dir 是英文单词directory(目录)的缩写,主要用来显示一个目录下的文件和子目录 md 是英文make directory(创建目录)的缩写 cd 是英文change directory( ...
- dos(cmd)命令大全(本文摘至于网络)
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在 ...
- cmd(命令行 )的命令
cmd是command的缩写.即命令行 CMD命令锦集 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是 ...
- 常见linux命令释义(第九天)—— Bash Shell 的操作环境Shell 中的管道命令一些管道命令
最近好懒好懒.连写文章都写不好了.于是只能写读一点书,记一点读书笔记了.太懒了,没办法.慢慢恢复自己的状态吧. 管道命令仅会处理strandard output 的内容,对于strandard err ...
随机推荐
- February 14th, 2018 Week 7th Wednesday
Love does not dominate, it culitvates. 爱不是羁绊,而是成就. Love should not wipe out everything you are, love ...
- 谱聚类算法(Spectral Clustering)优化与扩展
谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在社交网络中广泛应用.本文将讲述进一步扩展其应用场景:首先是User- ...
- 《程序员的自我修养》读书笔记——系统调用、API
系统调用 程序运行的时候,本身是没有权限访问多少系统资源的.系统资源有限,如果操作系统不进行控制,那么各个程序难免会产生冲突.线程操作系统都将可能产生冲突的系统资源保护起来,阻止程序直接访问. ...
- go中rune和byte的用处
参考:https://www.jianshu.com/p/4fbf529926ca rune是用来区分字符值和整数值的 byte 等同于int8,即一个字节长度,常用来处理ascii字符 rune 等 ...
- 多个窗口开启后,切换到指定title的窗口
1.在google中,可以开启多个窗口,这是需要切换到自己需要的窗口去定位元素.如下: #获取两个窗口的标题 ${titles} Selenium2Library.Get Window Titles ...
- Luogu1627 [CQOI2009]中位数
Luogu1627 [CQOI2009]中位数 给出一个 \(n\) 的排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 \(k\) \(n\leq10^5\) \(trick\) :因为不需 ...
- 支持“xxxContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
将项目的数据库连接用户及密码修改后(切换用户,用户名与原来不一样,用户下对象结构一致),报以下错误: 支持“XXXDBContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code Fir ...
- Keil软件常见配置
1.tab键占据字节数 Edit-->Configuration-->Tab Size-->安装上默认2个空格,这里改为4,符合通用代码编辑器的处理. 2.编码配置 Edit--&g ...
- eclipse svn合并小结
合并时候,当前在哪个分支上,哪个分支即为“主干” 弱化主干 分支的概念.svn原则上并没有主干 分子 主 从的概念.从一个项目衍生(分支)出来的版本,都可以是主,也可以是从. 版本之间互相合并原理 文 ...
- UI 前端参考
:http://amazeui.org/ :http://www.dcloud.io/index.html :https://weui.io/ :http://m.sui.taobao.org/get ...