【发布时间】:2017-11-19 13:18:41
【问题描述】:
我的代码
我在下面有一些直接的代码:
- 检查我的目录中是否存在文件
- 运行 for 循环以获取第一个文件名
- 根据文件名做事
- 删除文件
-
检查目录中是否存在任何其他文件(如果存在,重复,如果不存在,继续)
:MYLOOP IF NOT EXIST "%mypath%\*.*" GOTO nofile FOR %%F IN ("%mypath%\*.*") DO ( set filenameWithExt=%%~nxF set filename=%%~nF set filepath=%%~pF ) do other filename specific tasks del "%mypath%\%filenameWithExt%" IF NOT EXIST "%mypath%\*.*" GOTO nofile GOTO MYLOOP :nofile
我的问题
我反复使用过这段代码,它的工作原理就像一个魅力,但在我最近的使用中,它看起来像是找到了一个“幽灵”文件。当目录中没有没有文件(只有一个存档文件夹)时,上面第 1 步中的if not exist 检查仍然以某种方式通过。结果,for 循环中的set 代码导致:
系统找不到指定的文件。
然后它看起来好像试图删除我的目录,说:
\\mypath*,您确定 (Y/N) 吗?
然后我必须手动终止一个自动批处理。
我的问题
为什么它通过if not exist 检查,而不是跳到:nofile?
我该如何解释这个“幽灵”文件(或者如果它正在检测存档文件夹——我还能如何忽略它)?
【问题讨论】:
-
那么,在继续之前,您要检查
%mypath%中是否有任何文件吗? -
如果您要使用
%mypath%中的文件,我建议您通过迭代dir /b "%mypath%\*.*"的输出来完成。
标签: batch-file file-exists not-exists