1

我想用当前日期和时间的名称创建一个文件夹。经过大量搜索后,我发现这确实有效。

有人可以解释这些批处理命令的作用吗?

set timestamp=%DATE:/=-%@%TIME::=-%
set timestamp=%timestamp: =%
mkdir "%timestamp%"
4

2 回答 2

5

在行间插入echo语句,可以看到timestamp的值是多少

set timestamp=%DATE:/=-%@%TIME::=-%
echo %timestamp%
set timestamp=%timestamp: =%
echo %timestamp%
mkdir "%timestamp%"

基本上,代码只是从日期和冒号中删除正斜杠,因为这些不是有效的目录名称,用连字符替换它们。

读集/?环境变量替换以获得更好的想法。

于 2013-04-25T19:23:11.987 回答
4
set timestamp=%DATE:/=-%@%TIME::=-%

那是字符串替换。

第一个:

%DATE:/=-%将 DATE 变量中的“/”字符替换为“-”字符

(请参阅:控制台上的Echo %DATE% )

第二:

将“@”字符添加到 DATE 变量之后和 TIME 变量之前的字符串。

第三:

%TIME::=-%将“:”字符替换为“-”字符。

(请参阅:控制台上的Echo %Time% )

set timestamp=%timestamp: =%

接下来的替换将自己的空格替换为任何字符(因此删除空格),但实际上给出了任何空格,因此在您的示例代码中没有必要。

您可以在此处了解有关变量字符串替换的更多信息:http: //ss64.com/nt/syntax-replace.html

您还可以简化代码,因为无需先设置值:

mkdir "%DATE:/=-%@%TIME::=-%"
于 2013-04-25T19:24:02.937 回答