2013-04-25 113 views
1

我想用当前日期和时间的名称创建一个文件夹。 搜索了很多后,我发现这实际上有效。请解释一下批处理命令

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

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

回答

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

这是一个字符串替换。

1:

%DATE:/ = - %替代对象 “/” 字符为 “ - ” 字符日期变量

(见:在控制台上回声%DATE%

第二:

添加 “@” 字符到DATE VAR后,时间VAR之前的字符串。

3:

%TIME :: = - %替代对象 “:” 字符为 “ - ” 字符。

(参见:回声%TIME%在控制台上)

set timestamp=%timestamp: =% 

接下来在更换替代本身空格任何characarter(所以删除空格),但实际上任何空间给这样是没有必要的在你的示例代码中。

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

你也可以简化您的代码“导致没有必要先设定值:

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

伟大的答案电力币。谢谢!你可以投我的问题吗?在互联网上很难找到它,也可能会帮助其他人。我也需要一些声誉来投票你的答案,因为我有点新在这里 – 2013-04-25 20:03:09

+0

当然没有问题,但如果我的答案解决了你的问题,使用接受按钮也接受我的答案。 PS:你有我的+1,但是从另一个人-1,所以你的问题有0代表 – ElektroStudios 2013-04-25 20:16:12

+0

对不起。我不知道我可以在这个网站上私下与您联系,但似乎并不允许我发布另一个问题,因为这个帖子不符合我们的质量标准。但我还有一个问题:**我正在创建一个批处理文件,可以同时启动其他批处理文件。 我正在使用此代码来设置我需要在所有批处理文件中的时间变量。 如果我在每个批处理文件中使用相同的语法,我会得到不同的输出。 那么,我如何使这个变量通用的所有文件,我必须使用VB脚本? set timestamp =%DATE:/ = - %@%TIME :: = - %** bold ** – 2013-04-25 20:27:06

5

插入线之间echo语句,你可以看到什么时间戳的值是

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

基本上,代码只是从时间消除之日起,正斜杠和冒号,因为这些不是有效的目录名称替换他们与hypens。

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