"if exist Z:\xfile\NUL" returns 如果 Z: 映射到网络驱动器,则文件 xfile 为真
"if exist Z:\xfile\NUL" returns true for file xfile if Z: is mapped to a network drive
我将 Z: 替换为网络驱动器,例如:
subst Z: \fc\c
xfile 是一个 file(不是目录!),它存在于替换驱动器的根目录中。下面的语句错误地回应了 -exists-
if exist z:\xfile\nul echo -exists-
这使得 xfile 看起来像是一个目录,而实际上它是一个文件。
未替换的驱动器号不会导致问题。替换为非网络驱动器也不会导致问题。
是否有解决方法来处理看起来像 subst 或 if-exist 的错误?
这里是一个通用的构造,它应该从你的 .BAT 文件参数中工作,(这个假设它是第一个参数 %1
):
@Echo Off
For /F "Tokens=1-2 Delims=d" %%A In ("-%~a1") Do (
If "%%B" NEq "" (
Echo %1 is a directory
) Else If "%%A" NEq "-" (
Echo %1 is a file
) Else (
Echo %1 does not exist
)
)
Pause
不要使用 \Nul 机制。
更好地使用这个:(只需添加一个反斜杠)
if exist "%ALLUSERSPROFILE%\" (
echo Folder exist
) else (
echo Folder does not exist
)
我将 Z: 替换为网络驱动器,例如:
subst Z: \fc\c
xfile 是一个 file(不是目录!),它存在于替换驱动器的根目录中。下面的语句错误地回应了 -exists-
if exist z:\xfile\nul echo -exists-
这使得 xfile 看起来像是一个目录,而实际上它是一个文件。
未替换的驱动器号不会导致问题。替换为非网络驱动器也不会导致问题。
是否有解决方法来处理看起来像 subst 或 if-exist 的错误?
这里是一个通用的构造,它应该从你的 .BAT 文件参数中工作,(这个假设它是第一个参数 %1
):
@Echo Off
For /F "Tokens=1-2 Delims=d" %%A In ("-%~a1") Do (
If "%%B" NEq "" (
Echo %1 is a directory
) Else If "%%A" NEq "-" (
Echo %1 is a file
) Else (
Echo %1 does not exist
)
)
Pause
不要使用 \Nul 机制。
更好地使用这个:(只需添加一个反斜杠)
if exist "%ALLUSERSPROFILE%\" (
echo Folder exist
) else (
echo Folder does not exist
)