赞
踩
bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。这个文件的每一行都是一条DOS命令
在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
在windows环境下,命令行程序为cmd.exe。打开方式。快捷键[ctrl+r]——》键入cmd
接着,随便输入“www”回车,如果提示 “.......不是内部或外部命令,也不是可运行的程序或批处理文件。”
这是因为在环境变量Path里面没有添加此程序的执行文件,我们只有把程序的bin目录添加到Path变量里面就可以了
例如:右键“我的电脑-属性-高级-环境变量-path,
然后在其变量值后面添加“;程序安装目录/bin”(注:在添加目录前必须添加“;”号,而且此分号必须是英文格式的)。
创建文件my.bat ,内容如下
echo 后加内容即输出该内容
:: 输出hello world echo "hello world!" pause双击运行后效果如下:
pause:会暂停批处理的执行并在屏幕上显示Press any key to continue…
不加pause就会:双击运行批处理文件(xxx.bat),闪一下就消失
是因为批处理运bat行完成的时间很快,需要在运行完成后给添加暂停的命令
提示:pause 改为 pause>nul
可以不显示“请按任意键继续. . .”这些字,nul相当于空文件,把这些文字隐去了。
rem 注释符,也可以用两个冒号代替(::)
:: 注释内容 rem 注释内容
@echo off(关闭所有回显功能)
my.bat,在最开始加上@echo off
双击执行该bat文件,效果如下。就没有那些乱七八糟的 盘符路径命令本身呀。。。
试着改动一下my.bat
color 02 0代表背景色,a代表字体颜色
@echo off :: 设置窗口标题和颜色 title "bat批处理学习" color 0a echo "hello world!" pause双击执行该bat文件,效果如下
如果中文乱码,那么把bat文件的编辑改为ANSI格式
%CD% 获取当前目录[盘符 + 路径]
%PATH% 获取命令搜索路径
%DATE% 获取当前日期。
%TIME% 获得系统的当前时间
%RANDOM% 获取 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% 获取上一命令执行结果码
举例,在cmd窗口中输入 echo %CD%
系统变量在bat文件中使用,如:打印当前目录和系统临时文件夹目录。
修改bat文件如下:
@echo off :: 设置窗口标题和颜色 title "bat批处理学习" color 0a echo "当前目录:"%CD% echo "系统临时文件夹目录:"%TEMP% pause
--------------------
假如你和我一样,也是乱码成这样。。。
那么把bat文件的编辑改为ANSI格式就好了
set变量:变量设置值
最普通的set命令
@echo off title "bat批处理学习" color 0a :: set命令测试 set name=小羽毛 :: 输出变量name的值 echo %name% for %%i in (*.bat) do echo %%i pause>nul双击bat文件,执行结果
set /p命令 ,让用户自己输入变量值
@echo off title "bat批处理学习" color 0a :: set命令测试 set /p num=请输入一个数字: echo 你输入的是:%num% pause>nul双击bat文件,会等待输入变量
输入姓名之后,回车
如下所示,是一段以管理员权限往当前目录文本中添加内容的脚本:
- @echo off
-
- %1 mshta vbscript:CreateObject("WScript.Shell").Run("%~n0 ::",0,FALSE)(window.close)&&exit
-
- echo %cd% > adminpermission.txt
- echo %date% >> adminpermission.txt
这段脚本的意思,它会以管理员权限运行这段代码,并把当前目录写入adminpermission.txt文,然后写入当前的日期到adminpermission.txt。
在进程的地址空间中设一张表,表里头专门保存一些编号和由这个编号对应一个地址,而由那个地址去引用实际的对象,这个编号跟那个地址在数值上没有任何规律性的联系,纯粹是个映射而已。
在Windows系统中,这个编号就叫做"句柄"。
重定向:负责将指定命令或语句所产生的输入输出请求由缺省的“控制台”转交给其它的“设备”来完成,它的启动标志是“重定向符号”(包括“>,>>,<”三个)出现在句中。
> | 将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。 |
< | 从文件中而不是从键盘中读入命令输入。 |
>> | 将命令输出追加到文件末尾而不删除文件中的信息。 |
dir>dirlist.txt
如果 dirlist.txt 不存在,cmd.exe 将创建该文件。如果 cirlist.txt 存在,cmd.exe 将使用 dir命令的输出替换文件中的信息。
@echo off :: if-else结构学习 title "bat批处理学习" color 0a :: 设置变量v dir>dirlist.txt type dirlist.txt pause使用type是查看文件内容的
| 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
流程跳转的含义是:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。
goto [lable] 跳转到要执行的标签,在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令
注意:
- 标签名必须是常量,不能是变量
- 标签必须单独一行,并且以冒号打头。
双击bat文件,结果如下:
1.用“==” 判断字符串相等。
@echo off title "bat批处理学习" color 0a set name=李四 ::%name%是否等于"李四" if "%name%"=="李四" (echo 你是李四) else echo 你不是李四 pause>nul
2、判断数值相等。
@echo off title "bat批处理学习" color 0a set num1=15 set num2=18 :: 比较俩个数大于、等于、小于 if %num1% gtr %num2% echo %num1%大于%num2% if %num1% EQU %num2% echo %num1%等于%num2% if %num1% LSS %num2% echo %num1%小于%num2% pause>nul注意:比较运算符分为以下几种:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
3、结合errorlevel使用
环境变量%ERRORLEVEL%包含上次执行的程序或脚本的返回码。会在执行成功时返回零,或者在执行失败时返回非零
@echo off title "bat批处理学习" color 0a net user if %ERRORLEVEL% EQU 0 echo net user 命令执行成功 pause>nul
在批处理文件中:for %%i in (command1) do command2
for语句依次提取command1中的每一个元素,把它的值赋予形式变量i,带到do后的command2中参与命令的执行;
for语句的基本要素:
for循环,后面的多个元素逗号分割(默认以空格,;三种符号分隔开)
@echo off title "bat批处理学习" color 0a :: for命令测试 for %%i in (www,baidu,com) do echo %%i pause>nul执行结果
*.*,显示当前目录下所有的文件名
@echo off title "bat批处理学习" color 0a :: for命令测试 echo 显示当前目录下所有的文件名 for %%i in (*.*) do echo %%i pause>nul双击bat文件,执行结果
*.bat,显示当前目录下以.bat结尾的文件
@echo off title "bat批处理学习" color 0a :: for命令测试 echo 显示当前目录下以.bat结尾的文件 for %%i in (*.bat) do echo %%i pause>nul双击bat文件,执行结果
启动单独的“命令提示符”窗口来运行指定程序或命令。
用法:可以打开盘符、文件、文件夹、网址、程序...
start打开盘符
@echo off title "bat批处理学习" color 0a :: set命令测试 start e: pause>nul打开时,可以指定最大化、最小化
------------------------
start打开文件夹
:: 最小化方式打开文件夹 start /min e:\PR最小化,就是可以在任务栏找到啦
------------------------
start打开文件
:: 打开文件 start c:\aow_drv.log---------------------
start 打开网址
:: 使用默认浏览器打开网址 start https://mp.csdn.net---------------------
start 打开应用程序
:: 打开应用程序 start D:\tools\IntelliJ IDEA 2019.2.2\bin\idea64.exe额,可能会报错。是因为路径中有空格
可以这么用双引号,这么改
:: 打开应用程序 start D:\tools\"IntelliJ IDEA 2019.2.2"\bin\idea64.exe
从另一个批处理程序调用一个批处理程序,而不停止父批处理程序。 call 命令接受标签作为调用的目标。
只切换盘符,此时不需要cd ,直接"d:"字母大小写都可以。
格式:cd+空格+要切换的目录
结果就很尴尬了,,,为啥没切换成功呢?
方法一:因为要先切换盘符啊
方法二(推荐):
当然也可以在cd 和路径中间 增加一个'/d'
windows下路径分为:绝对路径和相对路径
绝对路径:在windows操作系统中凡是路径起点是盘符的都是绝对路径
相对路径:相对路径是相对于当前位置而言,以当前所在的位置作为起点。
切换到上级目录:cd ..
切换到根目录:cd \
遍历当前路径下所有文件
dir
copy 路径\文件名 路径\文件名
copy 目录一 目录二
mkdir [目录名] 新建目录
如:
mkdir test
创建多级目录?
rmdir [目录名] 目录删除
如:删除刚刚新建的test目录
rmdir test
强制删除,加 /s?
文件删除
del 全路径
删除某一个目录下的所有文件
del *.txt
移动文件并重命名
文件重命名功能
move 1.txt test.txt
移动文件
move
net user 查看所有的用户
net user [用户名] 查看某个用户详细信息
新建用户
删除用户
net user admin /delete
ping是一个测试程序,用于验证与远程计算机的连通性。ping 参数可以是ip地址,也可以是主机名或域名
ipconfig
用“ipconfig”命令查看本机ip。
ping
ping 本机ip",来查看网络协议TCP/IP是否正常
TTL起始值是一个2的乘方数(如32、64、128、256),起始值和返回值之间的差为经过的路由数
如下:64-50=14
输入“ping 网站地址”命令检查网络是否畅通
输入“ping 其它电脑ip”命令是否能连接局域网其它电脑
查看TCP/IP配置
netstat -na
其中Local Address代表本机IP地址和打开的端口号(图中本机打开了8080端口),Foreign Address是远程计算机IP地址和端口号,State表明当前TCP的连接状态,图中LISTENING是监听状态,表明本机正在打开8080端口监听,等待远程电脑的连接。
测试8080端口有没有开放
telnet 127.0.0.1 8080
netstat -ano | findstr "端口号"
“Tasklist”命令用来显示运行在本地或远程计算机上的所有进程的命令行工具
tasklist | findstr "Pid"
tasklist命令,就可显示本机的所有进程
本机的显示结果由五部分组成:映像名称(进程名)、PID、会话名、会话#、内存使用。
/F 指定要强行终止进程。
taskkill /f /t /im nginx.exe
(1)taskkill /im 后跟可执行文件名
(2)taskkill -pid 后跟进程ID
注册表是windows系统的数据库,保存着硬件、系统和软件正常运行的各种配置参数,修改注册表很容易造成系统崩溃,注册表的重要性不言而喻。注册表保存在系统的多个文件中,大部分保存在C:\Windows\System32\config中,如DEFAULT,DRIVERS,SAM,SECURITY,SOFTWARE,SYSTEM,userdiff等。
数据库文件是二进制文件,无法直接编辑,需要使用注册表编辑器,编辑器位置在C:\Windows\regedit.exe,
win+r后,
regedit------打开注册表
注册表是一个树状分层的数据库,它有5个HKEY根键(H是handle句柄的意思)
HKEY_CLASSES_ROOT,提取自HKEY_LOCAL_MACHINE\SOFTWARE\Classes目录,保存着文件的分类信息,包括文件扩展名,默认启动程序,程序和文件的图标,文件右键菜单功能等。
HKEY_CURRENT_USER,包含当前登录用户的配置信息,提取自HKEY_USERS。
HKEY_LOCAL_MACHINE,注册表的核心项,注册表的大部分软硬件和系统配置信息都保存在这里。
HKEY_USERS,包含计算机上所有用户的配置文件的根目录。创建的新用户会根据这里的.DEFAULT配置信息生成自己的配置文件。
HKEY_CURRENT_CONFIG,包含本地计算机在系统启动时所用的硬件配置文件信息,实际上是从两个注册表项创建而来的,即HKEY_LOCAL_MACHINE\System和HKEY_LOCAL_MACHINE\Software。因为是动态创建的,所以修改它的内容没有什么实际意义。
开启任务管理器选择 文件->
运行新任务
弹出新建任务窗口,输入cmd,勾选以系统管理权限创建此任务
msinfo32:打开系统信息
winver---------检查Windows版本
services.msc # 打开服务管理器
在桌面同时按住win+r打开运行,输入 mstsc
在 计算机 位置输入 被控制端的ip地址,点击连接即可,会弹出对话框
用户名和密码必需输入被控制电脑的系统管理员,即可实现连接
taskmgr
win+r后,
taskmgr------打开控制任务管理器
control命令
win+r后,
control------打开控制面板
notepad
win+r后,
notepad------打开记事本
SC 是用于与服务控制管理器和服务进行通信的命令行程序。
电脑系统开机,程序启动都有一个顺序,首先是操作系统的内核的启动,然后就是我们的系统服务启动,最后才到我们的普通应用程序启动。
命令sc,可以把一个普通程序创建成服务【在注册表和服务数据库中创建服务项】,用法:
sc create 服务名 binpath= “程序路径” start= auto displayname= “显示名”
注意: 等号和值之间需要一个空格。
sc start 服务名
sc stop 服务名
查询Windows服务:查看其状态和配置信息,包括服务名称、服务启动类型、服务状态等。
查询所有服务
sc query type= service state= all
查看某一个服务
服务名称与显示名称的区别在于:服务名称是系统定义的,用于区别其他服务的标识;而显示名称是显示在services.msc里的名称,
查看服务名称与显示名称对应关系的方法
sc query state= all|findstr "SERVICE_NAME DISPLAY_NAME"
把一个已经存在的服务改变它的启动类型,又该怎么操作?
sc config 服务名 start= 服务启动类型
=后面也必须有空格;服务名是真实的服务名,不同于显示名
如果想要删除一个服务,在命令行中“输入sc delete 服务名”
启动临时服务:
通过这个命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭。
redis-server.exe redis.windows.conf
在文件目录下按住
shift
+ 鼠标右键,弹出的菜单选项中就会包含 在此处打开命令窗口,命令行直接就在当前目录
把redis设置成windows下的服务,
redis-server --service-install redis.windows-service.conf --loglevel verbose
几个参数说明:
操作步骤为:鼠标右键「任务栏」– 点击「任务管理器」— 选择「服务」选项— 点击下方「打开服务」按钮,打开服务窗口之后就可以找到 Redis 的服务
在重启电脑之后,就可以直接在命令行操作 Redis 服务了
基本命令:
开启服务 redis-server --service-start
关闭服务 redis-server --service-stop
卸载服务 redis-server --service-uninstall
服务重命名 redis-server --service-name server-nam
将ElasticSearch注册为Windows的服务,然后设置服务为自动启动
进入bin目录下执行:
elasticsearch-service.bat install
运行成功之后,打开系统的“服务”,找到刚刚安装的ElasticSearch的服务
右键-->属性-->启动类型设置为自动-->确定 。如此一来,下次开机时,ES就会自己启动了。
最后的最后,访问一下 localhost:9200试一下吧~
elasticsearch-service.bat后面还可以执行这些命令
install: 安装Elasticsearch服务
remove: 删除已安装的Elasticsearch服务(如果启动则停止服务)
start: 启动Elasticsearch服务(如果已安装)
stop: 停止服务(如果启动)
manager:启动GUI来管理已安装的服务
elasticsearch-service.bat start
....好好好,事情果然不简单
elasticsearh从7.0开始默认安装了java运行环境,以便在没有安装java运行环境的机器上运行。如果配置了环境变量JAVA_HOME,则elasticsearh启动时会使用JAVA_HOME作为java路径,否则使用elasticsearh根目录下jdk目录为java路径。
当JAVA_HOME配置的java版本不满足需求时,可以修改elasticsearh的bin/elasticsearch-env.bat,就可以使用自带jdk版本
打开 elasticsearch-env.bat文件,如下是原有的配置,
if "%JAVA_HOME%" == "" ( set JAVA="%ES_HOME%\jdk\bin\java.exe" set JAVA_HOME="%ES_HOME%\jdk" set JAVA_TYPE=bundled jdk ) else ( set JAVA="%JAVA_HOME%\bin\java.exe" set JAVA_TYPE=JAVA_HOME )接下来要在原有的基础上做点小改造:
在文件中将if "%JAVA_HOME%" == "" (和它后面的else整个内容注释掉(es的配置中在每行的前面加rem),然后将if中的内容提取出来就好了
我没使用rem注释,是直接删除那些不需要保留的行,修改成
set JAVA="%ES_HOME%\jdk\bin\java.exe" set JAVA_HOME="%ES_HOME%\jdk" set JAVA_TYPE=bundled jdk使用elasticsearch-service.bat remove命令删除刚刚安装的es服务,重新安装服务并启动就成功了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。