2015-04-22 139 views
1

我想寫一個用戶將在批處理文件中創建的日誌,作爲一個小型的小遊戲,但我似乎無法得到正確的文件目錄。我想寫這個目錄:如何更改批處理文件輸出文本的目錄?

BatchfileandFolder\subfolder1\subfolder2\ThedataisHere.txt 

這是我的代碼(我真的不知道我在做什麼)

Echo Write a piece of text here 
set /p UserData= 
>>\subfolder1\subfolder2\"ThedataisHere.txt" echo %UserData% 

重要的是試圖深入挖掘目錄,但我不知道確切的命令,CD的幫助菜單和cmd.exe promt上的PATH對我沒有太大的幫助。

感謝您真正的人接觸,講地道的英語

回答

2
@ECHO OFF 
SETLOCAL 
SET "logfile=u:\sub folder1\sub folder2\ThedataisHere.txt" 
FOR /f "delims=" %%a IN ("%logfile%") DO MD "%%~dpa" 
Echo Write a piece of text here 
set /p UserData= 
>>"%logfile%" echo %UserData% 

GOTO :EOF 

這種方法使用的變量logfile這樣你就不會永遠輸入這個名字(並且如果你想改變名字或者目錄,避免痛苦,並且方法允許你如果你想要使用多個日誌文件)

我故意使用spaces in directory names來證明該方法。日誌文件名設置

  • 追加2>nul後到md指令線壓制directory already exists消息

從那裏,只需使用>>"%logfile%"創建日誌的目錄被立即創建。如果文件名不包含空格等分隔符,則不需要引號。

請注意,如果指定的目錄的第一個字符是\那麼該目錄是相對於根,但是如果不是,那麼該目錄是相對於目標驅動器上的當前目錄。 u:是一個驅動器說明符,而不是一個目錄名;我使用u:作爲我的試駕。你的選擇取決於你。

1

如果該目錄結構已經存在,這是很簡單的:

@echo off 
set /p UserData=Write some text here: 
@echo %UserData% >> "subfolder1\subfolder2\TheDataIsHere.txt" 

如果它不存在,則必須先創建它(上Win7的64位測試):

@echo off 
if not exist "subfolder1" md "subfolder1" 
if not exist "subfolder1\subfolder2" md "subfolder1\subfolder2" 
set /p UserData=Write some text here: 
@echo %UserData% >> "subfolder1\subfolder2\TheDataIsHere.txt" 
+0

沒有必要單獨創建每個目錄:「如果命令擴展已啓用...如果需要,MKDIR會在路徑中創建任何中間目錄」。 – Aacini

1

儘管您的描述很充足,但缺少一些重要的觀點。很顯然,你知道「如何更改批處理文件將輸出文本的目錄」,因爲你使用了>> \subfolder\...表示法,所以這是而不是你的問題。我只能猜測你想知道「如何獲取批處理文件所在的目錄」,所以你可以寫一個日誌文件放在以下的兩個級別即目錄下。如果這是您的問題,那麼您可以使用代表批處理文件路徑的表示法;那就是:

>> "%~P0subfolder1\subfolder2\ThedataisHere.txt" echo %UserData% 

。注意,通過%~P0返回的值在一個反斜槓結尾,所以必須%~P0通過附加反斜槓從subfolder1分開;還要注意引號必須包含整個文件的路徑整個

如果這不是你想要的,請仔細描述你的真實問題。無論如何,試着在未來的問題上更清楚。

相關問題