Batch file 如何解析返回的系统变量%%d0,在不使用冒号字符的情况下自行返回并存储当前驱动器号
在批处理文件中,以下命令返回驱动器号和冒号Batch file 如何解析返回的系统变量%%d0,在不使用冒号字符的情况下自行返回并存储当前驱动器号,batch-file,Batch File,在批处理文件中,以下命令返回驱动器号和冒号 set current_Drive=%~d0 echo %current_Drive% 我需要从%current\u Drive%中去掉冒号,以便可以使用变量驱动器号本身(“C”而不是“C:\”)在批处理中创建文本文件,例如- dir/s > "Myfiles on Drive %current_Drive% .txt" var%current\u Drive%中包含的冒号(:)在文件名中不是合法字符,需要去掉 我尝试修改以下示例: 该命令有
set current_Drive=%~d0
echo %current_Drive%
我需要从%current\u Drive%
中去掉冒号,以便可以使用变量驱动器号本身(“C”而不是“C:\”)在批处理中创建文本文件,例如-
dir/s > "Myfiles on Drive %current_Drive% .txt"
var%current\u Drive%
中包含的冒号(:)在文件名中不是合法字符,需要去掉
我尝试修改以下示例:
该命令有一些有用的字符串操作功能,如或
要仅获取变量的第一个字符,请使用
echo %current_Drive:~0,1%
在:~0,1
中,~
表示“我想要一个子字符串”;0
表示“跳过0
字符”;1
表示“从这里取1
字符”
注意:这仅适用于环境变量%var%
。它不适用于%0
或for
变量%a
-您需要先将它们分配给“普通”变量
您还可以使用echo%current\u Drive::\=%
删除不需要的部分:\
(不使用任何内容替换:\
),但我更喜欢第一种方法
另一种方法(对于这项任务来说,完全是过火了;只是为了完整):使用
for/f
循环将字符串按冒号拆分:
for /f "tokens=1 delims=:" %%a in ("%current_Drive%") do echo %%a
优点:您不必知道子字符串的长度,它包含从字符串开始到delimeter的所有内容。该命令有一些有用的字符串操作功能,如或
要仅获取变量的第一个字符,请使用
echo %current_Drive:~0,1%
在:~0,1
中,~
表示“我想要一个子字符串”;0
表示“跳过0
字符”;1
表示“从这里取1
字符”
注意:这仅适用于环境变量%var%
。它不适用于%0
或for
变量%a
-您需要先将它们分配给“普通”变量
您还可以使用echo%current\u Drive::\=%
删除不需要的部分:\
(不使用任何内容替换:\
),但我更喜欢第一种方法
另一种方法(对于这项任务来说,完全是过火了;只是为了完整):使用
for/f
循环将字符串按冒号拆分:
for /f "tokens=1 delims=:" %%a in ("%current_Drive%") do echo %%a
优点:您不必知道子字符串的长度,它需要从字符串开始到delimeter的所有信息。
echo%current\u Drive:~0,1%
帮助集和帮助中有文档。非常有用,谢谢,还解决了另一个问题。该语法还用于回显存储在windows批处理文件局部变量类型中的字符串(左、中、右)——例如——设置_StringVar=%“abcdefg”回显%tempvar:~4,2%@Stephan请使用您的注释回答。让我们尽量减少未回答的问题@JosefZ我的意见是,由于SO上的批处理文件有很多子字符串问题,请将其标记为重复(然后删除它[糟糕的重复]),而不是保留它。echo%current\u Drive:~0,1%
帮助集中有文档
和帮助
。非常有用,谢谢,还解决了另一个问题。该语法还用于回显存储在windows批处理文件局部变量类型中的字符串(左、中、右)——例如——设置_StringVar=%“abcdefg”回显%tempvar:~4,2%@Stephan请使用您的注释回答。让我们尽量减少未回答的问题@JosefZ我的意见是,由于在SO上批处理文件有很多子字符串问题,所以将其标记为重复(然后删除它[糟糕的重复]),而不是保留它。