-
dos 批处理中%cd% 和%~dp0%的区别
看网上介绍区别,写的好复杂,其实很简单:
%cd% 在批处理和命令窗口都能使用。用于打印,当前工作路径。
%~dp0% 则只能用于批处理中,用于获得当前批处理文件所在的路径。
做个试验试一下:
@echo off echo this is %%cd%% %cd% echo this is %%~dp0 %~dp0 echo switch to another folder: cd d:\Program Files (x86) echo this is %%cd%% %cd% echo this is %%~dp0 %~dp0 pause
结果发现%cd% 是可以在脚本中通过cd 切换到别的目录的,打印的路径是动态的。
事实上,应该注意的是,使用的场景多半不同, cd 到不同的工作路径,是dos常用操作。而%cd%就是为了得到当前的工作路径而设置的。
但是,另外一种常用的需求就是获取当前bat文件所在的路径,那这个路径就需要用%~dp0%。 这里有一点儿麻烦的情况就是bat1 再调用bat2, 到底获取的是哪个路径呢?
做个试验,试一下便知道了:
t1.bat:
@echo off echo this is t1.bat echo %%~dp0%% get path: %~dp0% cd D:\learn\Bat\codes call t2.bat pause
t2.bat:
echo this is t2.bat echo %%~dp0%% get path : %~dp0% pause
t1在d盘根目录,t2.bat 在D:\learn\Bat\codes。 执行t1.bat 执行结果是:
可见,是以当前命令所在的文件路径为准的咯。
注意,批处理想把变量名称本身, 要在外层在加一个%%。
出处:https://www.cnblogs.com/xiami303/p/4066919.html
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比