定义:
.bat文件即batch,批处理文件
百度百科的定义:批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件具有.bat或者.cmd的扩展名
详细
~的意思是扩展,变量扩充,相当于把相对路径转换到绝对路径
%0表示批处理文件本身,比如有一个文件demo.bat位于E:/test下,则%0表示文件E:/test/demo.bat
d是drive的缩写,即驱动盘(磁盘),p是path的缩写,即路径,
~dp:扩充到分区盘(上面的例子)E:/test
cd %~dp0:进入批处理本身所在位置,即E:/test
call 命令用来从一个批处理脚本调用到另一个批处理脚本
第一部分:
在D:\software\pythoncalculation\winpython\scipybook2下有一个名为run_console.bat和一个名为env.bat的文件,
前者的内容只有两行:
#将批处理脚本调到run_console.bat所在路径即D:\software\pythoncalculation\winpython\scipybook2
#同时指定要调用的批处理程序为env.bat文件
call %~dp0env.bat #指定要调用的批处理文件的位置和名称
cmd.exe /k #打开cmd终端,并运行完后不结束(否则执行完终端结束,即关闭)
(A)等待下面(B)续接…
可以将call理解为终端命令指定要做事情,比如打开文件。上面call %~dp0表示指定到run_console.bat所在的文件夹,因为和env.bat是同一个文件夹,所以也是env.bat的路径,后面直接跟着的是env.bat文件名,表示打开(运行)env.bat文件。env.bat是用来放环境变量的文件,这样就可以完成通过点击.bat文件直接完成环境变量设置的问题了(第二部分会接着说)
call C:\Users\Wudl\Desktop\test2\python_test.txt
即为打开python_test.txt文件,如果文件内容是hello world,则会通过笔记本打开此文件(如果有python的话可以改成python_test.py文件试试),并且关闭此打开的笔记本文件后终端也会关闭,如果要一直打开终端,则要如下面所示,加一条命令
call C:\Users\Wudl\Desktop\test2\python_test.txt
cmd.exe /k
这个时候关闭文件终端不会关闭,但是会打印出一条命令 cmd.exe /k,如果不想看到这条命令,则再加一条,如下:
#run_console1.bat
@echo off
call C:\Users\Wudl\Desktop\test2\python_test.txt
cmd.exe /k #完成任务后(如关闭文档时)不关闭cmd终端
cmd /c dir 是执行完dir命令后关闭命令窗口。 (立马执行完的,终端会一闪而过)
cmd /k dir 是执行完dir命令后不关闭命令窗口。 (终端打开并停留)
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
可以用cmd /?查看帮助信息。
(B)接着上面(A)讲:执行run_console.bat文件后自动弹出终端,并指向当前run_console.bat文件所在路径
再如我在桌面建一个名为dirshow.bat的文件,内容为:
@echo off
echo this is %~dp0 #%~dp0是显示文件路径
cmd.exe /k #打开终端并定位到当前.bat文件所在路径
结果会输出文件所在的路径并直接指到文件所在路径
所以如果要打开文件夹路径的话,可以放置一个.bat文件,并输入:
@echo off
cmd.exe /k
实际上echo是一个用于输出的命令,类似print:http://www.runoob.com/linux/linux-shell-echo.html
” @echo off表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显。而echo off命令则表示关闭其他所有命令(不包括本身这条命令)的回显,“@”的作用就是关闭紧跟其后的一条命令的回显。”
也就是不加@会在执行后在终端打印出echo off这一行。
第二部分: 通过点击文件设置环境变量
(1)先来看一个例子,
a.bat和b.bat在同一个文件假下,现在已知b.bat内容为打开一个txt文件:
@each off
call C:\User\xxx\test.txt
cmd.exe /k #关闭文件后终端不关闭(去掉表示关闭文件终端也关闭)
但是我想通过点击a.bat来打开txt文件而不是直接点击b.bat文件,则可以在a.bat文件下写
@echo off
call %~dp0b.bat
不加cmd.exe /k表示关闭文件终端也关闭。这样通过call来指定到b.bat文件,又b.bat是打开txt文件的命令,所以最终会打开txt文件。
(2)设置环境变量
环境变量设置可以参考:https://blog.csdn.net/Mr_Cat123/article/details/78698220
知道上面例子之后就可以建两个.bat文件,分别名为run_console.bat和env.bat
run_console.bat文件如下:
@echo off
call %~dp0env.bat
cmd.exe /k
env.bat文件如下:
算了,不会了,,,,大家自行google吧,等会了再更新~~~