Command line 请解释批处理命令

Command line 请解释批处理命令,command-line,batch-file,Command Line,Batch File,我想用当前日期和时间创建一个文件夹。 在搜索了很多之后,我发现这个确实有效 有人能解释一下这些批处理命令的作用吗 set timestamp=%DATE:/=-%@%TIME::=-% set timestamp=%timestamp: =% mkdir "%timestamp%" 在两行之间插入echo语句,就可以看到timestamp的值 set timestamp=%DATE:/=-%@%TIME::=-% echo %timestamp% set timestamp=%timestam

我想用当前日期和时间创建一个文件夹。 在搜索了很多之后,我发现这个确实有效

有人能解释一下这些批处理命令的作用吗

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

在两行之间插入echo语句,就可以看到timestamp的值

set timestamp=%DATE:/=-%@%TIME::=-%
echo %timestamp%
set timestamp=%timestamp: =%
echo %timestamp%
mkdir "%timestamp%"
基本上,代码只是从日期中删除正斜杠,从时间中删除冒号,因为这些都是无效的目录名,用hypens替换它们


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

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

set timestamp=%DATE:/=-%@%TIME::=-%
echo %timestamp%
set timestamp=%timestamp: =%
echo %timestamp%
mkdir "%timestamp%"
set timestamp=%DATE:/=-%@%TIME::=-%
基本上,代码只是从日期中删除正斜杠,从时间中删除冒号,因为这些都是无效的目录名,用hypens替换它们

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

set timestamp=%DATE:/=-%@%TIME::=-%
这是字符串替换

第一:

%日期:/=-%将日期变量中的/字符替换为-字符

请参阅:在控制台上回显%DATE%

set timestamp=%timestamp: =%
第二:

将@字符添加到日期变量之后和时间变量之前的字符串中

第三:

%时间::=-%替换:字符对字符

请参阅:在控制台上回显%Time%

set timestamp=%timestamp: =%
下一步,替换将自身的空格替换为任何字符,这样可以删除空格,但实际上任何空格都是给定的,所以在示例代码中是不必要的

您可以在此处了解有关变量字符串替换的更多信息:

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

mkdir "%DATE:/=-%@%TIME::=-%"
这是字符串替换

第一:

%日期:/=-%将日期变量中的/字符替换为-字符

请参阅:在控制台上回显%DATE%

set timestamp=%timestamp: =%
第二:

将@字符添加到日期变量之后和时间变量之前的字符串中

第三:

%时间::=-%替换:字符对字符

请参阅:在控制台上回显%Time%

set timestamp=%timestamp: =%
下一步,替换将自身的空格替换为任何字符,这样可以删除空格,但实际上任何空格都是给定的,所以在示例代码中是不必要的

您可以在此处了解有关变量字符串替换的更多信息:

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

mkdir "%DATE:/=-%@%TIME::=-%"

回答得很好,埃列克特罗。谢谢你能投票表决我的问题吗?这真的很难在网上找到,也许它也会帮助其他人。我也需要一些声誉来投票给你的答案,因为我是新来的,很抱歉打扰你。我不确定我能在这个网站上私下联系你,而且它似乎不允许我发布另一个问题,它说这篇文章不符合我们的质量标准。但我还有一个问题:我正在创建一个批处理文件,同时启动其他批处理文件。我使用这段代码设置所有批处理文件中所需的时间变量。如果我在每个批处理文件中使用相同的语法,我将得到不同的输出。那么,我如何使这个变量对所有文件通用,我必须使用vb脚本吗?设置时间戳=%DATE://=-%@%TIME:=-%**boldum没关系。我刚想出来。在主批处理文件中设置时间戳将使变量在其打开的所有其他批处理文件中具有通用性和可用性,因此您可以使用SETX在系统中设置环境变量,如%TEMP%var.edit:它不起作用我搞错了。我只是用一个简单的批处理代码cd%timestamp%对它进行了测试,每个批的时间戳都不同。我要试试setx。希望它能很好的回答Elektro。谢谢你能投票表决我的问题吗?这真的很难在网上找到,也许它也会帮助其他人。我也需要一些声誉来投票给你的答案,因为我是新来的,很抱歉打扰你。我不确定我能在这个网站上私下联系你,而且它似乎不允许我发布另一个问题,它说这篇文章不符合我们的质量标准。但我还有一个问题:我正在创建一个批处理文件,同时启动其他批处理文件。我使用这段代码设置所有批处理文件中所需的时间变量。如果我在每个批处理文件中使用相同的语法,我将得到不同的输出。那么,我如何使这个变量对所有文件通用,我必须使用vb脚本吗?设置时间戳=%DATE://=-%@%TIME:=-%**boldum没关系。我刚想出来。在主批处理文件中设置时间戳将使变量在其打开的所有其他批处理文件中具有通用性和可用性,因此您可以使用SETX在系统中设置环境变量,如%TEMP%var.edit:它不起作用我搞错了。我只是用一个简单的批处理代码cd%timestamp%对它进行了测试,每个批的时间戳都不同。我要试试setx。希望它能起作用