dos中的for命令简单使用
1、不添加任何參數,for循環顯示非目錄文件
for命令幫助信息是這樣寫的:
/**
FOR %variable IN (set) DO command [command-parameters]
? %variable ?指定一個單一字母可替換的參數。
? (set) ? ? ?指定一個或一組文件。可以使用通配符。
? command ? ?指定對每個文件執行的命令。
? command-parameters
? ? ? ? ? ? ?為特定命令指定參數或命令行開關。
在批處理程序中使用 FOR 命令時,指定變量請使用 %%variable
而不要用 %variable。變量名稱是區分大小寫的,所以 %i 不同于 %I.
*/
目錄如下:
建立一文件 test.bat ,復制以下代碼:
@echo off for %%i in (C:\Users\Administrator\Desktop\test\*) do echo %%i pause 雙擊運行結果:
可以明顯的看到圖中并沒有顯示目錄
2、通過 /d 參數顯示目錄文件:
for命令幫助信息是這樣寫的:
/**
FOR /D %variable IN (set) DO command [command-parameters]
? ? 如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
*/
復制以下代碼:
@echo off for /d %%i in (C:\Users\Administrator\Desktop\test\*) do echo %%i pause 可以看到,加了參數 /d ?后,只顯示了目錄文件3、通過 ?/R 參數,顯示目錄的級
for命令幫助信息是這樣寫的:
/**
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
? ? 檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的 FOR 語句。
? ? 如果在 /R 后沒有指定目錄規范,則使用當前目錄。如果集僅為一個單點(.)字符,
? ? 則枚舉該目錄樹。
*/
我們在bbbbb目錄下在創建ccc和ddd目錄,在ccc目錄里再穿件eee目錄:
復制一下代碼,栓劑運行:
@echo off for /R C:\Users\Administrator\Desktop\test %%i in (.) do echo %%i pause 運行結果:
可以看到命令行將目錄的各級都顯示出來了
4、fort通過參數 ?/L ?來實現遞增遞減循環:
for命令幫助信息是這樣寫的:
/**
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
? ? 檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的 FOR 語句。
? ? 如果在 /R 后沒有指定目錄規范,則使用當前目錄。如果集僅為一個單點(.)字符,
? ? 則枚舉該目錄樹。
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)
*/
復制一下代碼:
@echo off for /L %%i in (1,1,4) do echo %%i pause 運行結果:
如果改為: for /L %%i in (4,-1,2),則將以2為遞減循環。
5、通過參數 /F 來對文件進行操作:
這里幫助信息太多,就不列出來了,建立一個文件,輸入一下類容:
1234567890
aaaaaaaaaa
bb$bbbb*bb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg
格式如下:
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]
其中“options”有這些:eol=c, skip=n, delims=xxx, tokens=x,y,x-n, usebackq
首先我們來看elo=c,他表示忽略以c開頭的行,例如復制以下代碼:
@echo off for /f "eol=f" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i pause 執行結果:
可以看到fffffffffffff的那一行并沒有被打印。
skip=n,表示跳過開頭n行,例如復制以下代碼:
@echo off for /f "skip=2" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i pause 執行結果:
可以看到數字行和aaaaaaaaaaaaaaa行沒有打印出來;
delims=xy,表示在每一行中以x為分隔符號,x和y后面的字符忽略,復制以下代碼:
@echo off for /f "delims=$" %%i in (C:\Users\Administrator\Desktop\test\hello.txt) do echo %%i pause 執行結果:
對于tokens=n,m,n-m,參考:
http://blog.sina.com.cn/s/blog_4b795cc10100ez8d.html
對于usebackq,參見:
http://www.360doc.com/content/10/0706/05/1438974_37156664.shtml
6、對于set里面包含多條命令的方法
如下代碼:
@echo off for /f "delims=" %%i in ('dir /b .. ^| find "txt"') do echo %%i pause 篩選某個目錄下的txt文件,在管道前加 ?^ ?符號。參見:http://bbs.csdn.net/topics/340021271
http://blog.csdn.net/lyhdream/article/details/14214657
總結
以上是生活随笔為你收集整理的dos中的for命令简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过批处理文件自动安装apk到手机
- 下一篇: win7 桌面图标拖不动解决方法