cmd中for的用法

来源:https://www.cnblogs.com/kvii/archive/2019/10/09/11641155.html
-Advertisement-
Play Games

在cmd視窗輸入for /?後的原文,被我自己“翻譯”了一下,更像人話了。 推薦去https://www.cnblogs.com/cbugs/p/8992059.html這篇部落格裡去看看,講的更好。 在cmd視窗輸入for /?後 原文“翻譯” 對一組文件中的每一個文件執行某個特定命令。 基本格式 ...


在cmd視窗輸入for /?後的原文,被我自己“翻譯”了一下,更像人話了。

推薦去https://www.cnblogs.com/cbugs/p/8992059.html這篇部落格裡去看看,講的更好。

 

在cmd視窗輸入for /?後

 

原文“翻譯”

對一組文件中的每一個文件執行某個特定命令。

 

基本格式:

FOR %variable IN (set) DO command [command-parameters]

指令

含義

%variable

指定一個單一字母可替換的參數。

(set)    

指定一個或一組文件。可以使用通配符。

command

指定對每個文件執行的命令。

command-parameters

為特定命令指定參數或命令行開關。

   

註意:

在批處理程式中使用 FOR 命令時,指定變數請使用 %%variablem,而不要用 %variable。

此外,變數名稱是區分大小寫的,所以 %i 不同於 %I.

 

 FOR 命令支持以下形式:

 

/D 目錄

FOR /D %variable IN (set) DO command [command-parameters]

 只搜索當前目錄而非文件,可以指定通配符。

 

/R 遞歸

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

以 [drive:]path 為根,對每個目錄執行FOR語句。

如果在 /R 後沒有指定目錄規範,則使用當前目錄。

如果集僅為一個單點(.)字元,則枚舉該目錄樹。

 

/L 增量序列

FOR /L %variable IN (start,step,end) DO command [command-parameters]

該集表示以增量形式從開始到結束的一個數字序列。

因此,(1,1,5)將產生序列1 2 3 4 5,(5,-1,1)將產生序列(5 4 3 2 1)

 

/F 文本、命令分析

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

 

如果有 usebackq 選項就要寫成以下格式:

FOR /F ["options"] %variable IN ("file-set") DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]

 

fileset 解析一個或多個文件名。

String 解析字元串

conmmand 解析一個命令的結果,可以和tokens連用以用來獲取制定命令結果的指定行。

 

fileset 中的每份文件都被打開、讀取並經過處理。

處理時讀取文件,將其分成一行行的文字, 然後將每行解析成零或更多的符號。

最後用已找到的符號字元串變數值調用 For 迴圈。 

 

預設情況下,/F 通過每個文件的每一行中分開的第一個空白符號。跳過空白行。

可以在/F後面添加字元串,其內容及意義如下:

"options"的內容

意義

eol=c  

指定一個行註釋字元的結尾(就一個)。例如eol=;--忽略以分號打頭的那些行。

skip=n   

指定在文件開始時忽略的行數。例如skip=2 --忽略2行

delims=xxx

指定分隔符,可以有多個。

tokens=x,y,m-n

指每行的哪一個符號被傳遞到每個迭代 的 for 本身。這會導致額外變數名稱的分配。

可以使用m-n指定一個範圍的變數。

若指定的最後一個字元是星號,那額外的變數將會分配到最後一個變數解析之後該行剩餘的文本。

usebackq

若指定的文件名稱有空格,則需要對其進行轉義。

但使用‘’或“”會被理解為字元串或命令。

所以添加該參數以指定新的轉義方式。

 

 

例:

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

 

分析 myfile.txt中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給 for 函數體,指定分隔符為“,”或空格。

此 for 函數體的語句引用 %i 來獲得第二個符號,引用 %j 來獲得第三個符號,引用 %k來獲得第三個符號後的所有剩餘符號。

對於帶有空格的文件名,你需要用雙引號將文件名括起來,為了用這種方式來使用雙引號,還需要使用 usebackq 選項。

否則,雙引號會被理解成是用作定義某個要分析的字元串的。

 

%i 在 for 語句中顯式聲明,%j 和 %k 是通過tokens= 選項隱式聲明的。

可以通過 tokens= 一行指定最多 26 個符號,不要試圖聲明一個高於字母 "z" 或"Z" 的變數。

請記住,FOR 變數是單一字母、分大小寫和全局的變數;而且,不能同時使用超過 52 個。

 

例:

FOR /F "usebackq" %i in ('abc') do echo %i

列印abc

 

 

還可以在相鄰字元串上使用 FOR /F 分析邏輯,方法是,用單引號將括弧之間的 file-set 括起來。

這樣,該字元串會被當作一個文件中的一個單一輸入行進行解析。

 

可以用 FOR /F 命令來分析命令的輸出。

方法是,使用反引號括起字元串,則該字元串會被當作命令行,其命令結果會輸出到記憶體中並被當作文件分析。

 

例:

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

枚舉當前環境中的環境變數名稱。

 

另外,FOR 變數參照的替換已被增強。你現在可以使用下列

選項語法:

 

     %~I          - 刪除任何引號("),擴展 %I

     %~fI        - 將 %I 擴展到一個完全合格的路徑名

     %~dI        - 僅將 %I 擴展到一個驅動器號

     %~pI        - 僅將 %I 擴展到一個路徑

     %~nI        - 僅將 %I 擴展到一個文件名

     %~xI        - 僅將 %I 擴展到一個文件擴展名

     %~sI        - 擴展的路徑只含有短名

     %~aI        - 將 %I 擴展到文件的文件屬性

     %~tI        - 將 %I 擴展到文件的日期/時間

     %~zI        - 將 %I 擴展到文件的大小

     %~$PATH:I   - 查找列在路徑環境變數的目錄,並將 %I 擴展

                   到找到的第一個完全合格的名稱。如果環境變數名

                   未被定義,或者沒有找到文件,此組合鍵會擴展到

                   空字元串

 

可以組合修飾符來得到多重結果:

 

     %~dpI       - 僅將 %I 擴展到一個驅動器號和路徑

     %~nxI       - 僅將 %I 擴展到一個文件名和擴展名

     %~fsI       - 僅將 %I 擴展到一個帶有短名的完整路徑名

     %~dp$PATH:I - 搜索列在路徑環境變數的目錄,並將 %I 擴展

                   到找到的第一個驅動器號和路徑。

     %~ftzaI     - 將 %I 擴展到類似輸出線路的 DIR

 

在以上例子中,%I 和 PATH 可用其他有效數值代替。%~ 語法

用一個有效的 FOR 變數名終止。選取類似 %I 的大寫變數名

比較易讀,而且避免與不分大小寫的組合鍵混淆。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ansible自動化配置管理 一、安裝 配置 啟動 (ansible由紅帽收購) (1)什麼是ansible ansible是IT自動化配置管理工具,模塊豐富,組件豐富,可以通過一個命令完成一系列的操作。減少了維護成本和複雜性的工作,提高工作效率。 假設完成100台nginx服務的安裝: ssh 登 ...
  • 在linux系統命令行界面預設目錄顏色是藍色,在黑色底色上無法看清 原來效果圖: 最終效果圖: 大致步驟:1.複製配置文件到個人用戶的根目錄下2.修改配置文件中字體顏色的設置3.重新啟動視窗,輸入ls查看輸出的顏色是否OK 具體步驟: 1.將/etc/DIR_COLORS文件cp到~/下,並改名為. ...
  • httpd:是一個提供網站服務的程式 監聽埠:80 環境準備: Linux CentOS7.3系統 使用一臺服務端,一臺客戶端即可; 一、安裝httpd 1:安裝 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# se ...
  • 本人環境:虛擬機CentOS71804、虛擬機軟體VMwareWorkstation14Pro、所要添加的共用文件夾在物理機NTFS格式磁碟分區上。 本文僅對上述環境情況有效,其它情況僅供參考。 出現這個問題的原因是VMwareTools安裝不完全——之所以說不完全,是因為安裝CentOS時,預設安 ...
  • server { listen 80; server_name www.xxxx.com; if ($host = "www.xxxx.com"){ return 301 https://www.xxxx.com$request_uri; } } ...
  • vsftpd文件傳輸協議 系統環境:CentOS Linux release 7.6.1810 (Core) 一、簡介 FTP(文件傳輸協議)全稱是:Very Secure FTP Server。 Vsftpd是linux類操作系統上運行的ftp伺服器軟體。 vsftp提供三種登陸方式:1.匿名登錄 ...
  • 第一步:輸入網址: https://www.oracle.com/technetwork/java/javase/downloads/index.html 第二步:進入網址翻到最後一頁: 第三步:選擇下載大版本 第四步:選擇下載小版本 第五步:選擇下載小版本 1、下載jdk到任意位置,並通過tar ...
  • Linux系統 CentOS7 一、檢查網卡配置 vim /etc/sysconfig/network-scripts/ifcfg-ens32 確定是否開啟網卡 ONBOOT=yes 添加HWADDR=00:0c:29:36:e6:78(網卡mac地址) 二、檢查虛擬機網卡是否正確:(如圖) 檢查是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...