.bat文件(%~dp0)和call、echo批处理环境变量

定义

.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吧,等会了再更新~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值