如何测试目录是否存在

如何测试目录是否存在

该命令\IfFileExists非常适合测试文件是否存在。是否有等效命令可以测试目录是否存在? \IfFileExists似乎不适用于目录。

\documentclass{article}

\begin{document}
\newcommand*{\ExistingDirName}{./ExistingDir}%       This exists
\newcommand*{\NonExistingDirName}{./NonExistingDir}% This does not exist

\newcommand*{\ExistingFileName}{\ExistingDirName/ExistingFile.tex}% This exists
\newcommand*{\NonExistingFileName}{NonExistingFile.tex}% This does not exist


\newcommand*{\CheckExistence}[1]{
    \IfFileExists{#1}{
        "#1" exists\par
    }{
        "#1" does NOT exist\par
    }
}

\CheckExistence{\ExistingDirName}%    incorrect results
\CheckExistence{\NonExistingDirName}% correct result

\bigskip
\CheckExistence{\ExistingFileName}%    works
\CheckExistence{\NonExistingFileName}% works

\end{document}

答案1

正如 egreg 所说,没有针对目录的直接测试。一种可能性是,如果您尝试从目录中读取文件,则使用\IfFileExists检查其是否存在。如果您尝试在目录中写入文件,则只需尝试使用 打开它进行写入即可\immediate\openout

如果您没有尝试读取或写入目录中的文件,那么目录的存在可能就没那么重要了(除非您只是希望根据它是否存在来做一些不同的事情),因为您无法在不调用 shell 的情况下枚举目录。

答案2

嗯,这是一个相当老的话题。我通过在我的 TeX 目录中添加一个示例文本文件并用来\IfFileExists检查该文本文件是否存在来修复该问题。此方法与操作系统无关。这不是一种超级聪明的方法,至少可以完成工作!

相关内容