題 使用cmd命令行檢查文件/文件夾是否存在(非批處理腳本)


我在Windows控制台上試圖找出文件/文件夾是否存在。

EXIST 可以批量使用,但在命令行中不可用:

C:\Users\WIN7PR~1>EXIST C:\Users
'EXIST' is not recognized as an internal or external command, operable program or batch file.

4
2018-01-25 09:19


起源


@MichaelKjörling:對不起,我的意思是Windows命令行。由erreka修復:-) - Nicolas Raoul


答案:


資源是文件時的解決方案,如其他人所指出的那樣非常簡單:

C:\> IF EXIST C:\CONFIG.SYS ECHO C:\CONFIG.SYS exists.

不幸的是,上述內容對目錄不起作用。 EXIST函數為缺失和當前文件夾返回相同的結果。幸運的是,有一個模糊的解決方法:

C:\> IF NOT EXIST C:\FOLDER\NUL ECHO C:\FOLDER missing.
C:\FOLDER missing.
C:\> MD C:\FOLDER
C:\> IF EXIST C:\FOLDER\NUL ECHO C:\FOLDER exists.
C:\FOLDER exists.

事實證明,支持像追加一樣的結構 >NUL 在命令語句中,每個目錄中都有一種名為“NUL”的虛擬文件。檢查它的存在等同於檢查目錄的存在。

Microsoft知識庫文章中記錄了此行為( https://support.microsoft.com/en-us/kb/65994 )我已經確認了它在FreeDOS 1.1和Windows 7命令shell中的行為。

EXTRA:KB文章表明此技術也可用於查看是否存在驅動器。但是,在檢查驅動器存在的情況下,存在警告:

  • 一個 Abort, Retry, Fail? 如果未格式化驅動器,則會發生錯誤。

  • 使用此技術檢查驅動器是否存在取決於設備驅動程序的實現,並且可能並不總是有效。


6
2018-04-12 12:42



這適用於FreeDOS 1.1並記錄於此 support.microsoft.com/en-us/kb/65994 。如果你說它在Windows 7上不起作用,那麼顯然CMD不是DOS ;-),但是,我不同意它不起作用,因為我在Windows 7上嘗試過它。 - kbulgrien
Windows在1999-2000左右停止成為DOS,當時微軟最終放棄了Windows 9x系列產品並使用了Windows NT系列(NT 4,Windows 2000,Windows XP,Windows Vista,......)。 - a CVn


你可以用一個簡單的

DIR C:\User

6
2018-01-25 09:22





剛剛放 if 在前面 :)

if exist C:\Users echo It exists!

4
2018-01-25 09:26



返回:C:\ Users此時是意外的。 - Vaccano


您可以使用 type 命令,它將返回文本文件的內容而不打開它,對於它將返回的目錄:訪問被拒絕。

如果文件或目錄不可用,則會收到以下消息:系統找不到指定的文件。

例如:

C:\>type c:\temp
Access is denied.

C:\>type c:\example.txt
Some example content in a text file

C:\>type c:\doesnotexist
The system cannot find the file specified.

4
2018-01-25 13:06