導航:首頁 > 程序命令 > for命令讀取文件

for命令讀取文件

發布時間:2025-09-25 13:51:30

❶ Shell腳本中讀取文件每一行的方法總結

這篇文章主要總結了在Shell腳本中循環讀取文件每一行的方法。下面是兩種常用的方法:使用while循環和使用for循環。

### 使用while循環

在while循環中,使用read命令從標准輸入讀取一行,並將內容保存到變數line中。為了確保讀取的內容是原始的,避免反斜杠轉義,這里使用了-r選項。通過輸入重定向操作符<,可以將文件file作為read命令的標准輸入,從而讀取文件中的每一行。

### 使用for循環

對於使用for循環的情況,可以通過將文件內容重定向至命令的輸入,然後在循環中逐行處理。具體做法是在for循環中使用read命令,同時使用-f選項,確保文件的每一行被作為單獨的輸入提供給read命令。這樣,每執行一次循環,read命令就會讀取文件中的一行,並將其內容賦值給變數。

這兩種方法在實際應用中都十分常見,選擇哪一種取決於具體需求和腳本的其他部分。在處理文件內容時,根據是否需要原始格式、循環次數等因素,靈活選擇合適的循環結構。

❷ 關於一個批處理的解釋,有關for的命令

1.%%a 表示變數名稱為a ,%%a是批處理的用法,在cmd命令行里用%a。也就是讀取in()裡面的結果保存到a這個變絕辯弊量里。
2.in里文件可以指定文檔比如1.txt,也可以使用通配符 *.*、*.txt 等。
3.%%~za為獲取文件大小,還有其他用法:%%~ta獲取文件日期\時間並族,可以在CMD里輸入灶瞎for/?查看。
4.%%~za就是文件的大小,%%a才是整個文件名稱。
5.for /r d:\ %a in (*.txt) do echo %a 搜索真個D盤的txt文檔,/R為搜索這個目錄的所有子目錄。
6.for /f %%a in ('dir/b/a-d『) do (set n+=1&&ren %%a !n!.txt)

❸ 命令行 for 獲取文件時間(精確到秒)

獲取文件時間 精確到秒 要自己寫程序。
可以用SDK
BOOL GetFileTime(
HANDLE hFile, // handle to file
LPFILETIME lpCreationTime, // creation time
LPFILETIME lpLastAccessTime, // last access time
LPFILETIME lpLastWriteTime // last write time
);
要用到
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond; // 秒
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;

可以修改這個例子,增添輸出 wSecond;
BOOL GetLastWriteTime(HANDLE hFile, LPSTR lpszString)
{
FILETIME ftCreate, ftAccess, ftWrite, ftLocal;
SYSTEMTIME stCreate;

// Retrieve the file times for the file.
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
return FALSE;

// Convert the last-write time to local time.
if (!FileTimeToLocalFileTime(&ftWrite, &ftLocal))
return FALSE;

// Convert the local file time from UTC to system time.
FileTimeToSystemTime(&ftLocal, &stCreate);

// Build a string showing the date and time.
wsprintf(lpszString, "%02d/%02d/%d %02d:%02d",
stCreate.wDay, stCreate.wMonth, stCreate.wYear,
stCreate.wHour, stCreate.wMinute);

return TRUE;
}

命令行 要執行 batch. 取文件名,輸入到自己寫的程序里。

(PC 的 DIR, unix/linux 的 ls 只能精確到分。沒有辦法for一下就出來秒。)

❹ Windows批處理-for命令詳解

摘自Windows XP的幫助文檔。

For對一組文件中的每個文件運行指定的命令。

語法

for {%variable|%%variable} in (set) do command [ CommandLineOptions]

參數

{%variable|%%variable}

必需。代表可替換的參數。使用 %variable 通過命令提示符執行 for 命令。使用 %%variable 在批處理文件中執行 for 命令。變數要區分大小寫,並且必須用 Alpha 值表示,例如,%A、%B 或 %C。

(set)

必需。指定要用指定命令處理的一個或多個文件、目錄、數值范圍以及文本字元串。需要括弧。

command

必需。指定要對包括在指定 (set) 中的每個文件、目錄、數值范圍以及文本字元串所執行的命令。

CommandLineOptions

指定要通過指定命令使用的任何命令行選項。

/?

在命令提示符顯示幫助。

注釋

使用 for

可以在批處理文件中或直接從命令提示符使用 for 命令。

使用批處理參數

下列屬性適用於 for 命令:

for 命令使用指定 set 中的每個文本字元串替換 %variable 或 %%variable,直到 command 處理所有文件為止。

記住,for variable名是區分大小寫、全局的,並且每次總共不超過 52 個是活動的。

要避免批處理參數從 %0 到 %9 混淆,對 variable 可以使用除數字 0 到 9 之外的任何字元。對於簡單的批處理文件,單個字元即可奏效,例如 %%f。

在復雜的批處理文件中可以使用 variable 的多個值來區分不同的可替換變數。

顯示一組文件

set 參數可以代表單個或多個文件組。可以使用通配符(即,* 和 ?)指定文件組。以下為有效文件組:

(*.doc)

(*.doc *.txt *.me)

(jan*.doc jan*.rpt feb*.doc feb*.rpt)

(ar??1991.* ap??1991.*)

在使用 for 命令時,set 中的第一個值代替 %variable 或 %%variable,然後由指定的命令處理該值。這一直會繼續下去,直到處理完與 set 值相對應的所有文件(或文件組)為止。

使用 in 和 do 關鍵字

In 和 do 不是參數,但必須將它們與 for 一起使用。如果省略其中任何一個關鍵字,就會出現錯誤消息。

使用 for 的其它形式

如果命令擴展名處於啟用狀態(即,默認設置),則支持 for 的下列其它形式:

僅為目錄

如果 set 包含通配符(* 和 ?),則為匹配 set 的每個目錄(而不是指定目錄中的文件組)而執行指定的 command。語法是:

for /D {%% | %}variable in (set) do command [CommandLineOptions]

遞歸

進入根目錄樹 [Drive:]Path,在樹的每個目錄中執行 for 語句。如果在 /R 後沒有指定目錄,則假定為當前目錄。如果 set 只是一個句號 (.),則只列舉目錄樹。語法是:

for /R [[Drive :]Path] {%% | %}variable in (set) do command [CommandLineOptions]

重復數值范圍

使用迭代變數設置起始值 (start#) ,然後一步步執行一系列設置范圍的值,直到該值超過設置的終止值 (end#)。/L 將通過對 start# 與 end# 進行比較,執行迭代變數。如果 start# 小於 end#,就會執行該命令。如果迭代變數超過 end#,則命令解釋程序退出此循環。也可以使用負 step# 以遞減數值的方式一步步執行此范圍內的值。例如,(1,1,5) 生成順序 1 2 3 4 5,而 (5,-1,1) 則生成順序 (5 4 3 2 1)。語法是:

for /L {%% | %}variable in (start#,step#,end#) do command [CommandLineOptions]

重復和文件解析

使用文件解析過程處理命令輸出、字元串和文件內容。使用迭代變數定義要檢查的內容或字元串,以及使用各種 ParsingKeywords 選項進一步修改解析方式。使用 ParsingKeywords 令牌選項指定哪些令牌應該傳遞為迭代程序變數。注意:在沒有使用令牌選項時,/F 將僅檢查第一個令牌。

文件解析過程包括讀取輸出、字元串或文件內容、分成獨立的文本行及然後將每行解析成零個或更多個令牌。然後通過設置為令牌的迭代程序變數值,調用 for 循環。默認情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。跳過空行。語法的不同點為:

for /F ["ParsingKeywords"] {%% | %}variable in (filenameset) do command [CommandLineOptions]

for /F ["ParsingKeywords"] {%% | %}variable in ("LiteralString") do command [CommandLineOptions]

for /F ["ParsingKeywords"] {%% | %}variable in ('command') do command [CommandLineOptions]

filenameset 參數指定一個或多個文件名稱。在繼續到 filenameset 中的下一個文件之前,每個文件都會被打開、讀取和處理。要覆蓋默認解析行為,指定 "ParsingKeywords"。這是一個引用字元串,它包含一個或多個關鍵字以指定不同的解析選項。

如果使用 usebackq 選項,請使用如下語法之一:

for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in (`command`) do command [CommandLineOptions]

下表列出可以用於 ParsingKeywords 的解析關鍵字。

關鍵字 說明

eol=c 指定行尾字元(只一個字元)。

skip=n 指定在文件的開頭跳過的行數。

delims=xxx 指定定界符集合。這將替換空格和製表符的默認分隔符集。

tokens=x,y,m-n 指定將哪些令牌從每行傳遞到每個迭代的 for 正文。結果就分配了附加變數名稱。m-n 格式是一個范圍,指定從 mth 到 nth 的令牌。如果 tokens=字元串中最後一個字元是星號 (*),則將分配附加的變數,並在解析的最後一個令牌後在行上接收剩餘的文本。

usebackq 指定可以使用引號引用 filenameset 中的文件名稱,將後面帶有引號的字元串作為一個命令執行,而帶有單引號的字元串是文字字元串命令。

變數替換

已經增強了 for 變數引用的替換修改程序。下表列出可選語法(對於任意變數 I)。

帶有修改程序的變數 說明

%~I 展開刪除任何前後引號 ("") 的 %I。

%~fI 將 %I 展開到完全合格的路徑名。

%~dI 只將 %I 展開到驅動器號。

%~pI 只將 %I 展開到路徑。

%~nI 只將 %I 展開到文件名

%~xI 只將 %I 展開到文件擴展名。

%~sI 展開路徑以只包含短名稱。

%~aI 將 %I 展開到文件的文件屬性。

%~tI 將 %I 展開到文件的日期和時間。

%~zI 將 %I 展開到文件大小。

%~$PATH:I 搜索 PATH 環境變數所列出的目錄,並將 %I 展開到第一個找到的完全合格的名稱。如果沒有定義環境變數名稱,或搜索沒有找到文件,則此修改程序擴展成空字元串。

下表列出可用來獲得綜合結果的修改程序組合。

變數(使用組合的修改程序) 說明

%~dpI 只將 %I 展開到驅動器號和路徑。

%~nxI 只將 %I 展開到文件名和擴展名。

%~fsI 將 %I 展開到只包含短名稱的完整路徑名。

%~dp$PATH:I 在 PATH 環境變數中所列出的目錄中搜索 %I,並展開到第一個找到結果的驅動器號和路徑。

%~ftzaI 將 %I 展開到輸出行(如 dir一樣)。

在上述範例中,可以用其它有效值替換 %I 和 PATH。有效的 for 變數名終止 %~ syntax。

使用大寫變數名(例如 %I),可以使代碼更具可讀性,並且避免與不區分大小寫的修改程序混淆。

解析字元串

通過將 Filenameset 包括在圓括弧內,並且外面再帶上單引號(即,'filenameset'),可以使用 for /F 對直接字元串解析邏輯。將 Filenameset 視為從某個文件輸入的單行,然後接受解析。

解析輸出

通過將圓括弧之間的 filenameset 變為後面帶有引號的字元串,可以利用 for /F 命令解析命令輸出。將它作為命令行,此命令被傳遞給子 Cmd.exe,並將輸出捕獲到內存並進行解析,就象它是一個文件一樣。

範例

要在批處理文件中使用 for,請使用以下語法:

for %%variable in (set) do command [CommandLineOptions]

要通過使用可替換變數 %f 顯示當前目錄中擴展名為 .doc 或 .txt 的所有文件的內容,請鍵入:

for %f in (*.doc *.txt) do type %f

在前述範例中,當前目錄中擴展名為 .doc 或 .txt 的每個文件都被替代為變數 %f ,直到每個文件的內容都顯示為止。要在批處理文件中使用該命令,只需使用 %%f 替換 %f 的每個事件。否則忽略此變數,並顯示一條錯誤消息。

要解析文件,同時忽略注釋行,請鍵入:

for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k

這個命令解析 myfile.txt 文件的每一行,忽略以分號開頭的行,將第二和第三個令牌從各行傳遞到 FOR 正文(令牌通過逗號或空格分隔)中。FOR 語句的正文引用 %i 以獲得第二個令牌,引用 %j 以獲得第三個令牌,引用 %k 以獲得其餘全部令牌。如果您提供的文件名包含空格,請使用引號將文本引起來(例如,"File Name")。要使用引號,必須使用 usebackq。否則,就將引號解釋為定義要解析的文字字元串。

要通過將 filenameset 放在括弧之間來解析命令輸出,請鍵入:

for /F "usebackq delims==" %i IN (`set`) DO @echo %i

這個範例列舉當前環境中的環境變數名。

❺ bat中的「for」的用法。~

學批處理當然要學到for了

看看他的基本格式
FOR 參數 %%變數名 IN (相關文件或命令) DO 執行的命令

參數:FOR有4個參數 /d /l /r /f 比較常用的是/f參數
%%變數名 :這個變數名可以是小寫a-z或者大寫A-Z,他們區分大小寫哦~

IN:命令的格式,照寫就是了!
(相關文件或命令) :FOR要把什麼東西讀取然後賦值給變數,不懂的話看下面的例子
do:命令的格式,照寫就是了!
當然我們可以不加任何參數執行FOR,這個時候他可以加通配符號進行操作,看我的例子.
例子:
@echo off
for %%i in (c:\windows\*.txt) do echo %%i
pause

這個會列印c:\windows\目錄下的全部TXT文件的文件名字.

❻ bat中運用for /r命令

FOR命令就是把讀取的東西,然後賦值給變數。
FOR有4個參數/d、 /l 、 /r 、 /f
每個參數的意思分別如下:
/d:僅為目錄
如果Set (也就是我上面寫的"相關文件或命令")包含通配符(*和?),將對與Set相匹配的每個目錄(而不是指定目錄中的文件組)執行指定的Command。
/R:遞歸
進入根目錄樹[Drive:]Path,在樹的每個目錄中執行for語句。如果在/R後沒有指定目錄,則認為是當前目錄。如果Set只是一個句點(.),則只枚舉目錄樹。
/L:迭代數值范圍
使用迭代變數設置起始值(Start#),然後逐步執行一組范圍的值,直到該值超過所設置的終止值(End#)。/L將通過對Start#與End#進行比較來執行迭代變數。
/f:迭代及文件解析
使用文件解析來處理命令輸出、字元串及文件內容。使用迭代變數定義要檢查的內容或字元串,並使用各種ParsingKeywords選項進一步修改解析方式。

閱讀全文

與for命令讀取文件相關的資料

熱點內容
javapost獲取參數 瀏覽:459
一汽大眾app車輛顏色怎麼更換 瀏覽:610
太極編譯器評測 瀏覽:453
pdf變動畫 瀏覽:947
pdf合一 瀏覽:291
如何委託手機app開發 瀏覽:133
命令表示動作 瀏覽:610
mc怎麼用命令塊坑隊友 瀏覽:315
for命令讀取文件 瀏覽:73
php支付安全問題 瀏覽:335
vbs編譯器手機 瀏覽:399
加密門禁卡復制卡 瀏覽:275
伺服器必須配置永久IP地址 瀏覽:944
活塞式製冷壓縮機拆裝 瀏覽:818
linuxlvs安裝 瀏覽:324
解壓照片降低分辨 瀏覽:397
詩集pdf 瀏覽:780
程序員的工資都去了哪裡 瀏覽:271
xr關閉應用加密 瀏覽:22
金立w900無命令 瀏覽:711