windows 脚本命令基础

1.Echo 命令
打开回显或关闭请求回显功能,或显示消息。
2.@ 命令
表示不显示@后面的命令,但是会显示结果
3.Goto和: 命令
:定义标签,goto跳转到标签
4.Rem ::注释命令
::不显示不执行,rem显示不执行
5.Pause 命令
暂停命令
6.Call 命令
调用本文件内命令段,相当于子程序.被调用的命令段以标签:label开头,以命令goto :eof结尾。
eg:

Call :sub tmp.txt
:sub
Echo 删除引号: %~1
Goto :eof

7.start 命令:调用外部程序
8.choice 命令
CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。”
if %errorlevel%==“a” goto end
/C 创建选项列表ab默认是 “YN”,/N 不显示选项列表,/m 设置提示文字,/t 设置暂停时间后自动选择默认项,/d 设置默认项
9.If 命令
判断是否符合规定的条件,从而决定执行不同的命令
if “参数”== “字符串” 待执行的命令 :条件成立,运行命令
if exist 文件名 待执行的命令:如果有指定的文件,运行命令
if errorlevel / if not errorlevel 数字 待执行的命令:程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1
10.for 命令
/d仅为目录
/R递归(文件名)
/L迭代数值范围
/F迭代及文件解析
11.set 命令
set string=csdn 赋值,echo %string% 使用值
set /P INPUT= 设置为输入值
12.net start 查看所有服务
13.tasklist 查看所有进程
14.taskkill 结束进程 taskkill /f /t /im “iex*”
/IM 指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。
/T 终止指定的进程和由它启用的子进程。
/F 指定强制终止进程。

二、如何在批处理文件中使用参数

批处理中可以使用参数,一般从1%到 9%这九个

三、组合命令

1.& 第一条命令 & 第二条命令 [& 第三条命令…]
这种方法可以同时执行多条命令,而不管命令是否执行成功
2.&& 第一条命令 && 第二条命令 [&& 第三条命令…]
碰到执行出错的命令后将不执行后面的命令
3.││ 第一条命令 ││ 第二条命令 [││ 第三条命令…]
碰到执行正确的命令后将不执行后面的命令

四、管道命令的使用

1.│ 第一条命令 │ 第二条命令 [│ 第三条命令…]
第一条命令的结果作为第二条命令的参数来使用
2.>、>>输出重定向命令
>覆盖内容,>>追加内容
robocopy 高级复制

五、常用命令

----------------命令----------------
Del:删除文件
Copy:复制文件
Xcopy:复制文件夹
Md:创建文件夹
rd:删除文件夹
ren:重命名文件(夹)
move:移动文件(夹)
find:字符串查找
findstr:字符串查找增强,可以进行模式匹配搜索
pushd c:\mp3 保存当前目录,并切换当前目录为 c:\mp3
popd 恢复当前目录为刚才保存的 d:\mp4
----------------dir命令----------------
dir 显示当前目录中的文件和子目录
dir /a 显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir c: /a:d 显示 C 盘当前目录中的目录
dir c: /a:-d 显示 C 盘根目录中的文件
dir c:\ /b/p /b只显示文件名,/p分页显示
dir .exe /s 显示当前目录和子目录里所有的.exe文件
----------------其它----------------
@choice /t 10 /d y /n >nul 等待10秒
rd /s/q d:\temp 删除d:\temp 文件夹及其子文件夹和文件
del /q/a/f/s d:\temp*.
删除 d:\temp及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
ren d:\temp tmp 支持对文件夹的重命名
cls命令 清屏
type *.txt 显示当前目录里所有.txt文件的内容
xcopy d:\mp3 e:\mp3 /s/e/i/y
复制 d:\mp3 文件夹、所有子文件夹和文件到 e:\ ,覆盖已有文件
加 /i 表示目标文件夹不存在就自动新建一个,否则会有询问
----------------date和time命令----------------
date 显示当前日期,并提示输入新日期,按"回车"略过输入

date /t 只显示当前日期,不提示输入新日期

time 显示当前时间,并提示输入新时间,按"回车"略过输入

time/t 只显示当前时间,不提示输入新时间
----------------find命令------------------------
find “abc” c:\test.txt
在 c:\test.txt 文件里查找含 abc 字符串的行,如果找不到,将设 errorlevel 返回码为1

find /i “abc” c:\test.txt
查找含 abc 的行,忽略大小写

find /c “abc” c:\test.txt
显示含 abc 的行的行数
----------------for命令------------------------
循环命令
for %%i in (c: d: e: f:) do echo %%i
依次调用小括号里的每个字符串,执行 do 后面的命令
注意%%i,在批处理中 for 语句调用参数用2个%

for %%i in (*.txt) do find “abc” %%i
对当前目录里所有的txt文件执行 find 命令

for /r . %%i in (*.txt) do find “abc” %%i
在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行

for /r . %%i in (.) do echo %%~pni
显示当前目录名和所有子目录名,包括路径,不包括盘符

for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt
把 d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去

for /l %%i in (2,1,8) do echo %%i
生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1

for /f %%i in (‘set’) do echo %%i
对 set 命令的输出结果循环调用,每行一个

for /f “eol=P” %%i in (‘set’) do echo %%i
eol忽略以 P 开头的那几行

for /f %%i in (d:\mp3.txt) do echo %%i
默认不支持带空格的名称

for /f “delims=” %%i in (d:\mp3.txt) do echo %%i
delims支持带空格的名称

for /f “skip=5 tokens=4” %%a in (‘dir’) do echo %%a
skip跳过前面5行,tokens每行取第4列

启动服务
net start 查看启动中的服务
服务名启动 net start “服务名”
服务名停止 net stop “服务名”

用sc可打开被禁用的服务,语法是:【Start=号后面有空格】
创建服务
sc create test3 binPath= “C:\Users\win32srvDemo.exe”
配置服务
sc config 服务名 start= demand //手动
sc config 服务名 start= auto //自动
sc config 服务名 start= disabled //禁用
启动和结束
sc start 服务名
sc stop 服务名

运维常用

1,显示系统版本

@echo for each ps in getobject _ >ps.vbs

@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>ps.vbs

@echo wscript.echo ps.caption^&" "^&ps.version:next >>ps.vbs

cscript //nologo ps.vbs & del ps.vbs

2,列举进程

@echo for each ps in getobject _ >ps.vbs

@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>ps.vbs

@echo wscript.echo ps.handle&vbtab&ps.name&vbtab&ps.executablepath:next >>ps.vbs

cscript //nologo ps.vbs & del ps.vbs

3,终止进程

@echo for each ps in getobject _ >pk.vbs

@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>pk.vbs

@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pk.vbs

要终止PID为123的进程,使用如下语法:

cscript pk.vbs 123

如果显示一个0,表示终止成功。

然后:

del pk.vbs

4,重启系统

@echo for each os in getobject _ >rb.vbs

@echo (“winmgmts:{(shutdown)}!//./root/cimv2:win32_operatingsystem”).instances_ >>rb.vbs

@echo os.win32shutdown(2):next >>rb.vbs & cscript //nologo rb.vbs & del rb.vbs

5,列举自启动的服务

@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs

@echo if sc.startmode=“Auto” then wscript.echo sc.name^&" - "^&sc.pathname >>sc.vbs

@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

6,列举正在运行的服务

@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs

@echo if sc.state=“Running” then wscript.echo sc.name^&" - "^&sc.pathname >>sc.vbs

@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

7,显示系统最后一次启动的时间

@echo for each os in getobject _ >bt.vbs

@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>bt.vbs

@echo wscript.echo os.lastbootuptime:next >>bt.vbs & cscript //nologo bt.vbs & del bt.vbs

8、netsh

在远程shell中使用netsh首先要解决一个交互方式的问题。前面说过,很多shell不能再次重定向输出输出,所以不能在这种环境下交互地使用ftp等命令行工具。解决的办法是,一般交互式的工具 都允许使用脚本(或者叫应答文件)。比如ftp -s:filename。netsh也是这样:

netsh -f filename。

netsh命令的功能非常多,可以配置IAS、DHCP、RAS、WINS、NAT服务器,TCP/IP协议,IPX协议,路由等。一般运维,我们只需用netsh来了解目标主机的网络配置信息。

1,TCP/IP配置

echo interface ip >s

echo show config >>s

netsh -f s

del s

由此你可以了解该主机有多个网卡和IP,是否是动态分配IP(DHCP),内网IP是多少(如果有的话)。这个命令和ipconfig /all差不多。

注意,以下命令需要目标主机启动remoteaccess服务。如果它被禁用,请先通过导入注册表解禁,然后

net start remoteaccess

2,ARP

echo interface ip >s

echo show ipnet >>s

netsh -f s

del s

这个比arp -a命令多一点信息。

3,TCP/UDP连接

echo interface ip >s

echo show tcpconn >>s

echo show udpconn >>s

netsh -f s

del s

这组命令和netstat -an一样。

4,网卡信息

如果netsh命令都有其他命令可代替,那它还有什么存在的必要呢?下面这个就找不到代替的了。

echo interface ip >s

echo show interface >>s

netsh -f s

del s

9、IPSec

首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。下面就说说如何在命令行下控制IPSec。

XP系统用ipseccmd,2000下用ipsecpol。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的SUPPORT/TOOLS/SUPPORT.CAB中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol 还必须带上另外两个文件:ipsecutil.dll和text2pol.dll。三个文件一共119KB。

IPSec的设置保存在注册表中 (HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/IPSec/Policy/Local),理论上可以通过修改注册表来配置IPSec。但很多信息以二进制形式存放,读取和修改都很困难。相比之下, 上传命令行工具更方便。

在设置IPSec策略方面,ipseccmd命令的语法和ipsecpol几乎完全一样,所以只以ipsecpol为例:

1,防御rpc-dcom攻击

ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x

这条命令关闭了本地主机的TCP135,139,445和udp135,137,138,445端口。

具体含义如下:

-p myfirewall 指定策略名为myfirewall

-r rpc-dcom 指定规则名为rpc-dcom

-f … 建立7个筛选器。*表示任何地址(源);0表示本机地址(目标);+表示镜像(双向)筛选。详细语法见ipsecpol -?

-n BLOCK 指定筛选操作是"阻塞"。注意,BLOCK必须是大写。

-w reg 将配置写入注册表,重启后仍有效。

-x 立刻激活该策略。

2,防止被ping

ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x

如果名为myfirewall的策略已存在,则antiping规则将添加至其中。

注意,该规则同时也阻止了该主机ping别人。

3,对后门进行IP限制

假设你在某主机上安装了DameWare Mini Remote Control。为了保护它不被别人暴破密码或溢出,应该限制对其服务端口6129的访问。

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg

ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x

这样就只有123.45.67.89可以访问该主机的6129端口了。

如果你是动态IP,应该根据IP分配的范围设置规则。比如:

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg

ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x

这样就允许123.45.67.1至123.45.67.254的IP访问6129端口。

在写规则的时候,应该特别小心,不要把自己也阻塞了。如果你不确定某个规则的效果是否和预想的一样,可以先用计划任务"留下后路"。例如:

c:/>net start schedule

Task Scheduler 服务正在启动 …

Task Scheduler 服务已经启动成功。

c:/>time /t

12:34

c:/>at 12:39 ipsecpol -p myfw -y -w reg

新加了一项作业,其作业 ID = 1

然后,你有5分钟时间设置一个myfw策略并测试它。5分钟后计划任务将停止该策略。

如果测试结果不理想,就删除该策略。

c:/>ipsecpol -p myfw -o -w reg

注意,删除策略前必须先确保它已停止。不停止它的话,即使删除也会在一段时间内继续生效。持续时间取决于策略的刷新时间,默认是180分钟。

如果测试通过,那么就启用它。

c:/>ipsecpol -p myfw -x -w reg

最后说一下查看IPSec策略的办法。

对于XP很简单,一条命令搞定–ipseccmd show filters

而ipsecpol没有查询的功能。需要再用一个命令行工具netdiag。它位于2000系统安装盘的SUPPORT/TOOLS/SUPPORT.CAB中。(已经上传了三个文件,也就不在乎多一个了。_)

netdiag需要RemoteRegistry服务的支持。所以先启动该服务:

net start remoteregistry

不启动RemoteRegistry就会得到一个错误:

[FATAL] Failed to get system information of this machine.

netdiag这个工具功能十分强大,与网络有关的信息都可以获取!不过,输出的信息有时过于详细,超过命令行控制台cmd.exe的输出缓存,而不是每个远程cmd shell都可以用more命令来分页的。

查看ipsec策略的命令是:

netdiag /debug /test:ipsec

然后是一长串输出信息。IPSec策略位于最后。

软件安装

一个软件/工具的安装过程,一般来说只是做两件事:拷贝文件到特定目录和修改注册表。只要搞清楚具体的内容,那么就可以自己在命令行下实现了。(不考虑安装后需要注册激活等情况)

WinPcap是个很常用的工具,但必须在窗口界面下安装。在网上也可以找到不用GUI的版本(但还是有版权页),其实我们完全可以自己做一个。

以WinPcap 3.0a 为例。通过比较安装前后的文件系统和注册表快照,很容易了解整个安装过程。

除去反安装的部分,关键的文件有三个:wpcap.dll,packet.dll和npf.sys。前面两个文件位于system32目录下,第三个在system32/drivers下。而注册表的变化是增加了一个系统服务NPF。注意, 是系统服务(即驱动)不是Win32服务。

作为系统服务,不但要在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下增加主键,在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root下也增加主键。而后者默认只有 SYSTEM身份才可以修改。幸运的是,并不需要手动添加它,winpcap被调用时会自动搞定。甚至完全不用手动修改注册表,所有的事winpcap都会自己完成,只需要将三个文件复制到合适的位置就行了。

作为范例,还是演示一下如何修改注册表:利用前面说过的inf文件来实现。

[Version]

Signature=" W I N D O W S N T WINDOWS NT WINDOWSNT"

[DefaultInstall.Services]

AddService=NPF,winpcap_svr

[winpcap_svr]

DisplayName=Netgroup Packet Filter

ServiceType=0x1

StartType=3

ErrorControl=1

ServiceBinary=%12%/npf.sys

将上面这些内容保存为_wpcap_.inf文件。

再写一个批处理_wpcap_.bat:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %CD%/wpcap.inf

del wpcap.inf

if /i %CD%==%SYSTEMROOT%/system32 goto COPYDRV

copy packet.dll %SYSTEMROOT%/system32/

copy wpcap.dll %SYSTEMROOT%/system32/

del packet.dll

del wpcap.dll

:COPYDRV

if /i %CD%==%SYSTEMROOT%/system32/drivers goto END

copy npf.sys %SYSTEMROOT%/system32/drivers/

del npf.sys

:END

del %0

然后用winrar将所有文件(5个)打包为自解压的exe,并将『高级自解压选项』->『解压后运行』设置为_wpcap_.bat,命令行的winpcap安装包就制作完成了。

注意,批处理最后一行没有回车符。否则会因为正在运行而无法删除自己。

所有的软件安装,基本上可以套用这个思路。但也有例外的,那就是系统补丁的安装。

由于系统补丁有可能要替换正在被执行或访问的文件,所以用copy命令是不行的。

幸好,Windows补丁包支持命令行安装。

比如:

KB824146.exe -n -z -q

-n 不保留备份

-z 不重起

-q 安静模式

如果有一堆补丁要打,那么用RAR打包成自解压文件,外加一个批处理。

for %%f in (KB???.exe) do %%f -n -z -q

for %%f in (KB???.exe) do del %%f

del %0

检测指标

在这里插入图片描述

10、删除指定天以前的文件

@echo off
::需要Win2003/Vista/Win7系统自带的forfiles命令的支持
rem 指定待删除文件的存放路径
set SrcDir=F:\RECORD
rem 指定天数
set DaysAgo=90
rem forfiles /p %SrcDir% /s /m . /d -%DaysAgo% /c “cmd /c del /f /q /a @path”
forfiles /p %SrcDir% /s /m . /d -%DaysAgo% /c “cmd /c del /f /q /a @path”
for files /p %SrcDir% /m /d -%DaysAgo% /c " if @ISDIR==TRUE rd /s /q @PATH"
pause

11、网络管理

route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 -p

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值