该命令\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
检查该文本文件是否存在来修复该问题。此方法与操作系统无关。这不是一种超级聪明的方法,至少可以完成工作!