2014-01-14 132 views
0

我想設置一個變量「directusepermission」作爲txt文件的第一行。cmd - 獲取txt內容的第一行

組/ P directusepermission = <%〜DP0 \ directuse.txt-一線

因此,我希望僅第一行。我該怎麼做?

+0

見http://stackoverflow.com/questions/1295068/windows-equiv-of-the-head-command的一些想法。在'nix中,一個人會使用'head'命令...該鏈接討論cmd替代品 – Floris

+0

重新閱讀該問題。我希望得到第一行**變量**。 – user3186610

+0

我認爲獲得第一條線是「讓它變成一個變量」的第一步。你有沒有看到http://stackoverflow.com/a/7827243/1967396? – Floris

回答

1

你有什麼應該就夠了。

set /p "var="<file 

<file set /p "var=" 

將讀取file第一行到可變var

在您的代碼中,問題可能是當前批處理文件的路徑。如果它包含空格,則必須引用文件名。

set /p "directusepermission=" < "%~dp0\directuse.txt" 

而且,讀變量時,這樣你就需要檢查

  • 如果要讀取的文件不存在變量的以前的內容沒有改變
  • 如果第一文件中的行是空的,變量的前一個內容沒有變化
  • 如果第一行只包含空格,這將是變量的內容
  • t因此,只有製表符的行被認爲是空的,並且變量值沒有變化

您也可以使用for /f命令遍歷文件內容。在這種情況下,不存在的文件「問題」仍然存在,但空行會被忽略,如果它們爲空或僅包含空格或製表符。

但是,爲了僅獲得第一行,您將需要一些代碼來確定只有第一行將被賦值給變量。

這遍歷所有的文件內容,但只分配第一行到變量。對於單行或小文件,這是最簡單的。 tokens=*要求for命令檢索所有行並已包含useback參數以避免引用的文件名被視爲要處理的字符串。

set "var=" 
for /f "tokens=* usebackq" %%f in ("file") do if not defined var set "var=%%f" 

這僅檢索文件的第一行,但需要一個aditional的標籤從哪裏跳出來擺脫for命令

for /f "tokens=* usebackq" %%f in ("file") do set "var=%%f" & goto endLoop 
:endLoop 

如果你知道哪些內容是要行檢索,文件可以被過濾,只獲得所需的行。這將返回只有數行從開始到該行的結束,最後一行(請記住,它遍歷返回線以上)將asigned給變量

for /f "tokens=*" %%f in ('findstr /r "^[0-9][0-9]*$" <"file"') do set "var=%%f" 
0
for /f "delims=" %%a in (%~dp0\directuse.txt) do set directusepermission=%%a&goto done 
:done 

應該就足夠了。