2013-04-25 111 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。

閱讀集/?環境變量替代以獲得更好的想法。