用批處理獲取當前目錄下所有檔案的路徑

2021-05-21 19:42:04 字數 3821 閱讀 7772

例一 (強)

@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...