例一 (強)
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do (
set file=%%~fi
set 不要這行file=!file:%cd%/=!
set file=!file:/=/!
echo !file! >> 內容.txt
)可以將所有檔案相對於搜尋路徑(當前目錄)的相對路徑輸出,但是也同時將所有目錄進行輸出了。
參考了論壇上另外乙個帖子:如何判斷引數是檔案還是目錄
判斷是否存在目錄: if exist "%~f1/" ...
判斷是否存在檔案: if exist "%~f1" if not exist "%~f1/"...
寫了如下的批處理:檔案列表輸出至file.txt,目錄列表輸出至directory.txt
例二@echo off
例三@echo off
for %%a in (c: d: e: f:) do cd /d %%a & for /r %%b in (desktop.ini) do if exist %%b echo %%b
pause
集合(一)概述
for命令常見的三種表達方式:in (command1)、 in (集合)、 in (set)。
集合,也稱集。在批處理裡,它確定乙個範圍、總量,是乙個資料庫,由固定數值(元素)組成,向變數提供固定數值,用於替換變數。變數和集合的關係是需求與供給的關係。集合的個數決定了需要迴圈的次數。
集合必須用圓括號括起來。
集合裡的內容包羅永珍。可以是單個字元,也可以是字串,可以是檔案,也可以是命令。我們見得最多有:
路徑+檔名:如c:/note.txt
文字:如歌曲列表.txt
字詞:如我愛北京天安門
數字:如123
符號:如+、-、*、/
命令:如』set』
碟符:如c:/
還有時間、程序、登錄檔、服務、記憶體管理、啟動等等。
集合裡可以是只有乙個元素(數值),如:「我愛北京天安門」
也可以有多個,如:「c: d: e: f:」
甚至所有、全部,如:*.*
可以確指,如「我愛北京天安門」
也可以是模糊的,如:w?s.*
(二)for與檔案查詢
由於for也可以用來查詢檔案,for結合萬用字元查詢檔案的功能要比dir強得多,因此有必要結合萬用字元來談談for命令。
萬用字元(?和*)常用來代替未具體指明的檔案和資料。
?代表單個字元。
* 代表全部字元。
將萬用字元用於集合內,for可以展現強大的搜尋能力。
1、查詢當前目錄(批處理命令所在的位置)的所有檔案:
@echo off
for %%i in (*.*) do echo "%%i"
pause
講解:*.*的第乙個星號表示檔名,第二個星號表示副檔名,整體表示所有型別的檔案。
2、列舉當前目錄下所有擴充套件名為txt的檔案:
@echo off
for %%i in (*.txt) do echo "%%i"
pause
講解:*.txt表示所有擴充套件名為txt的檔案,也就是所有文件(記事本)檔案了。
3、查詢txt和doc兩種型別的文件:
@echo off
for %%i in (*.doc *.txt) do echo "%%i"
pause
講解:集合裡包含兩個元素*.doc和*.txt,兩者之間六個空格。*.doc是所有word文件。
4、查詢檔案名只有兩個字元的文件:
@echo off
for %%i in (??.txt) do echo %%i
pause
講解:??表示兩個字元,也就是檔名只有兩個字母或兩個漢字了的文件。
5、查詢檔案名第二個字母為o的***檔案:
@echo off
for %%i in (?o*.***) do echo %%i
pause
講解:?和o存在先後順序,?是第乙個字元,o是第二個字元,*代表剩餘的字元。
6、查詢以f開頭的檔案:
@echo off
for %%i in (f*.*) do echo %%i
pause
講解:f*.*t表示檔名以「f」開頭,副檔名以「t」結尾的檔案。
7、查詢含有字母f的檔案:
@echo off
for %%i in (*f*) do echo %%i
pause
講解:檔名含有字母「f」,但不包括資料夾在內。
8、查詢c盤下的所有檔案,不包括子目錄:
@echo off
for %%i in (c:/*) do echo %%i
pause
9、查詢c盤下的所有檔案,包括子目錄:
@echo off
for /r c:/ %%i in (*) do echo %%i
pause
10、查詢c盤下的所有資料夾,包括子目錄:
@echo off
for /r c:/ %%i in (.) do echo %%i
pause
講解:如果集合只是乙個句點 (.),則只列舉目錄樹。
似乎除了*,使用其他字元搜尋到的都是目錄,但資料夾後面都跟了乙個點號。
11、全盤搜尋檔案desktop.ini:
@echo off
for %%a in (c: d: e: f:) do cd /d %%a & for /r %%b in (desktop.ini) do if exist %%b echo %%b
pause
注意:凡是涉及d盤的都搜尋不出來,而我的大部分exe都放在d盤,d盤又沒設保護,為什麼?
涉及長檔名,中間有空格亦無法start。如:c:/program files,如何解決?
12、搜尋f盤***檔案:
@echo off
for /r f:/ %%i in (*.***) do echo %%i>>music.txt
pause>nul
講解:將搜尋到的***檔案儲存到music.txt文件中。
用批處理獲取當前目錄下所有檔案的路徑
例一 強 echo off setlocal enabledelayedexpansion for f delims i in dir a s b on do set file fi set 不要這行file file cd set file file echo file 內容.txt 可以將所有檔...
批處理獲取目錄下所有檔名
由於要處理一些檔案,找了個這樣的批處理 輸出目錄及子目錄下所有的jpg的檔名,不含副檔名 其中,delims 的含義是取消預設的分隔符,所以會把行上的內容照搬下來,而 tokens 表示獲取行上的所有內容,但是會忽略行首的所有空格。另外的引數介紹一下 0 1 2 3 4 5 6 7 8 9 命令列傳...
swift獲取目錄下所有檔案
我想獲得的功能是獲取某目錄下所有檔案。然後讀取出來放到table view 上 先寫一下怎麼獲取 指定檔案目錄下的檔案 var localmusicdirectoryadress string users goofygao music music let musiclists nsfilemanag...