无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6209|回复: 24
打印 上一主题 下一主题

奇怪的命令

[复制链接]
跳转到指定楼层
1#
发表于 2022-9-17 09:03:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这样一条命令:echo %~d0
直接在cmd中运行,回显成 %~d0
用bat运行,回显是 C:
何故?
2#
 楼主| 发表于 2022-9-17 09:06:21 | 只看该作者
本帖最后由 shuini 于 2022-9-17 09:21 编辑

难道(聪明的)CMD把路径当作字符串了?肯定不会的。但就是不明白是什么道理。
回复

使用道具 举报

3#
发表于 2022-9-17 09:22:53 | 只看该作者
将bat放d盘里测

点评

能正确运行  详情 回复 发表于 2022-9-17 09:37
回复

使用道具 举报

4#
 楼主| 发表于 2022-9-17 09:37:28 | 只看该作者
szwp 发表于 2022-9-17 09:22
将bat放d盘里测

能正确运行
回复

使用道具 举报

5#
发表于 2022-9-17 09:42:18 | 只看该作者
  1.   %0指批处理本身

  2.   批参数(%n)的替代已被增强。你可以使用以下语法:

  3.       %~0         - 删除引号("),扩展 %0
  4.       %~f0        - 将 %0 扩展到一个完全合格的路径名
  5.       %~d0        - 仅将 %0 扩展到一个驱动器号
  6.       %~p0        - 仅将 %0 扩展到一个路径
  7.       %~n0        - 仅将 %0 扩展到一个文件名
  8.       %~x0        - 仅将 %0 扩展到一个文件扩展名
  9.       %~s0        - 扩展的路径只含有短名
  10.       %~a0        - 将 %0 扩展到文件属性
  11.       %~t0        - 将 %0 扩展到文件的日期/时间
  12.       %~z0        - 将 %0 扩展到文件的大小
  13.       %~$PATH:0   - 查找列在 PATH 环境变量的目录,并将 %0
  14.                     扩展到找到的第一个完全合格的名称。如果
  15.                     环境变量名未被定义,或者没有找到文件,
  16.                     此修改符会扩展到空字符串

  17. 可以组合修改符来取得多重结果:

  18.      %~dp0       - 只将 %0 扩展到驱动器号和路径
  19.      %~nx0       - 只将 %0 扩展到文件名和扩展名
  20.      %~dp$PATH:0 - 在列在 PATH 环境变量中的目录里查找 %0,
  21.                    并扩展到找到的第一个文件的驱动器号和路径。
  22.      %~ftza0     - 将 %0 扩展到类似 DIR 的输出行。
复制代码

点评

很详细,谢谢分享  详情 回复 发表于 2023-5-25 21:26

评分

参与人数 2无忧币 +6 收起 理由
hsis872 + 1
928274096 + 5 赞一个!

查看全部评分

回复

使用道具 举报

6#
发表于 2022-9-17 09:52:39 来自手机 | 只看该作者
不想要C不放C盘

点评

是要在CMD里回显出这个变量值,不管是C还是D或者其他。  详情 回复 发表于 2022-9-17 10:00
回复

使用道具 举报

7#
 楼主| 发表于 2022-9-17 09:58:08 | 只看该作者
窄口牛 发表于 2022-9-17 09:44
没啥奇怪的哇,这个就是批处理里面的cmd里他就没意义。
批处理的变量是两个%%,cmd里只需要一个%,这个本 ...

也就是说,直接用命令让cmd回显出%~d0的变量值是没戏的?
回复

使用道具 举报

8#
 楼主| 发表于 2022-9-17 10:00:46 | 只看该作者
szwp 发表于 2022-9-17 09:52
不想要C不放C盘

是要在CMD里回显出这个变量值,不管是C还是D或者其他。

点评

先得知道0表示什么,1表示什么  详情 回复 发表于 2022-9-17 16:02
cmd 命令行里可以用 echo %CD:~,3%  详情 回复 发表于 2022-9-17 10:49
回复

使用道具 举报

9#
发表于 2022-9-17 10:17:06 | 只看该作者
二楼的回答说得很清楚了,%0表示批处理本身,你在cmd窗口中直接输入,%0表示的批处理文件本身在哪里?
回复

使用道具 举报

10#
发表于 2022-9-17 10:49:57 | 只看该作者
shuini 发表于 2022-9-17 10:00
是要在CMD里回显出这个变量值,不管是C还是D或者其他。

cmd 命令行里可以用
echo %CD:~,3%

点评

这个不错  发表于 2022-9-17 12:10
回复

使用道具 举报

11#
发表于 2022-9-17 11:05:01 来自手机 | 只看该作者
知道0表示什么么?
回复

使用道具 举报

12#
发表于 2022-9-17 12:51:29 | 只看该作者
%~d0 表示%0中的驱动器号
%0、%1、%2... 等等是批处理的运行参数
%0 是批处理的文件名路径本身(全路径,包含驱动器号开始直到处理文件扩展名为止)
%1 是批处理的第1个参数
...

所以你直接在cmd命令行中使用 %~d0 是没有意义的,会识别为单纯的字串,在批处理中才会识别为变量。
回复

使用道具 举报

13#
 楼主| 发表于 2022-9-17 15:40:14 | 只看该作者
已解决,谢谢各位。
回复

使用道具 举报

14#
发表于 2022-9-17 16:02:17 | 只看该作者
shuini 发表于 2022-9-17 10:00
是要在CMD里回显出这个变量值,不管是C还是D或者其他。

先得知道0表示什么,1表示什么
回复

使用道具 举报

15#
发表于 2022-9-17 22:09:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

16#
发表于 2022-9-19 14:40:56 | 只看该作者
回复

使用道具 举报

17#
发表于 2023-5-25 21:26:20 | 只看该作者

很详细,谢谢分享
回复

使用道具 举报

18#
发表于 2023-6-13 17:41:58 | 只看该作者
进来学习
回复

使用道具 举报

19#
发表于 2023-6-13 17:55:46 | 只看该作者
环境不同,执行结果不同
回复

使用道具 举报

20#
发表于 2023-11-26 05:38:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-22 17:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表