![检查多个网络共享文件是否存在](https://linux22.com/image/721438/%E6%A3%80%E6%9F%A5%E5%A4%9A%E4%B8%AA%E7%BD%91%E7%BB%9C%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8.png)
假设我有一个文件列表(files.txt
),如下所示:
\\myshare\file1
\\myshare\file2
\\myshare\file3
如何通过批处理脚本(Windows)检查这些文件是否存在并输出?我尝试过if exists \\path\file
,但它总是告诉我该路径在语法上不能使用。
答案1
这是一个完整的脚本。可以修改它以与其他东西一起使用
@echo off
for /f "tokens=*" %%s in (list.txt) do (
if exist %%s (
echo %%s found
echo %%s >> sharesfound.txt
) else (
echo %%s NOT found
echo %%s >> sharesmissing.txt
)
)
答案2
根据路径的格式,我认为您指的是 SMB:在这种情况下,您可以挂载共享(例如使用mount.cifs
)并检查它是否是本地文件,或者您可以使用它smbclient
来检查文件是否远程存在:
smbclient //host/share -U username -c "ls filetocheck"
结果将在 中$?
,如果文件存在则为零,1
否则。
在 Windows 上,您可以使用if exist \\server\share goto label
(实际上,您可以发出任何 CMD 命令来代替goto
)