2015-07-04 167 views
1

我試圖創建一個文本文件創建一個文本文件,而在它的名稱的變量:問題從一個批處理文件

mkdir logs 
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) 
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) 
set filename=build_%mydate%_%mytime% 
gradlew build > I:\TNB_XPort_Redux\logs\%filename%x.txt 

當我運行該批處理文件,我得到這個作爲輸出: Issue

任何想法如何讓文件被正確創建爲文本文件?

編輯:我期待文件被命名爲:build_date_time。 TXT代替build_date_time

+0

在運行gradlew之前回顯文件名變量。你可能會有某種奇怪的突破人物或某種東西。否則,請重新檢查您的代碼並確保輸出文件路徑實際上以.txt結尾 – SomethingDark

回答

1

您可以使用下面你所選擇的道路,以創建一個空白的文本文件:

mkdir logs 
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) 
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) 
break>"I:\TNB_XPort_Redux\logs\build_%mydate%_%mytime%.txt" 

這剪斷的代碼將創建一個目錄「日誌」,和一個空白文件「 build_%mydate%_%mytime%.txt「。

或者,您可以使用更長的方法設置文件名變量,就像您在示例中所做的那樣。

mkdir logs 
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) 
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) 
set filename=build_%mydate%_%mytime% 
break>"I:\TNB_XPort_Redux\logs\%filename%.txt" 

所有的一切,他們都做同樣的事情

+0

完美解決,謝謝。我錯過了引號,它現在按預期工作。 – TehNoiseBomb

0

嘗試用

mkdir logs 
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set "mydate=%%c-%%a-%%b") 
For /f "tokens=1-2 delims=/: " %%a in ('time /t') do (set "mytime=%%a%%b") 
set "filename=build_%mydate%_%mytime%" 
gradlew build > "I:\TNB_XPort_Redux\logs\%filename%.txt" 

而在我的系統無法重現觀察到的行爲,它可以通過之後插入空格重建時間戳。引號將防止在行末加入結尾空格,並防止文件名中出現空格時出現問題。