[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何获取批处理文件所在路径呀?

需要用fsum来计算和检测MD5,为了在不同的目录环境下都能正确执行批处理,
需要用fsum -d参数也设置路径,有的目录有空格,所以给%~dp0加了双引号,
然后问题出现了,运行到这句命令就出错了。
  1. "%~dp0fsum" -r -d"%~dp0" *.*
复制代码
准确来说是-d"%~dp0"   这里获取的路径最后有一个反斜杠\ 会与最后一个引号结合,失去了原来的作用
现在我把这句修改成了
  1. "%~dp0fsum" -r -d"%~dp0\" *.*
复制代码
这样可以正确运行了,cmd解析为:
  1. "D:\Program Files\fsum" -d"D:\Program Files\\" *.*
复制代码
但是这样会不会有隐患的问题,会不会在别的系统上不能成功???
另外还有别的获取路径的最后不带反斜杠的方法吗?

本帖最后由 wqte45 于 2019-6-9 14:15 编辑

如果在批处理中,后面跟不跟文件或路径单独使用"%~dp0" 当做路径操作 也不会有问题,
只有用作fsum -d的参数时候,才会有问题,可能是 fsum的原因吧
  1. "D:\Program Files\fsum" -d"D:\Program Files\" *.*
  2. D:\Program Files" *.*\ - no such directory
复制代码

TOP

回复 3# miqilaosu
fsum.exe 的 -d参数默认是没有空格的;
你提供的单引号的方法运行的那句命令是可以的,但检测的时候就不可以了。
  1. "%~dp0fsum" -r -d '%~dp0' *.* > md5.log        可以
  2. "%~dp0fsum" -d '%~dp0' -c md5.log              失败
复制代码
我就那样先用着吧,谢谢啦。

TOP

返回列表