[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如果用bat判断远程共享的文件夹是否存在?

小弟想用bat判断远程共享的文件夹是否存在,如果存在的话就执行一个函数,如果不存在就输出一句话。
下面是小弟写的一个bat,但是没有达到效果,请大家指教。
  1. @echo off
  2. REM 下面是远程服务器的连接信息ip、用户名、密码和数据库共享文件的名称
  3. set RemoteServerIp=192.168.1.103
  4. set RemoteServerUser=lf
  5. set RemoteServerPasswd=123456
  6. REM 共享文件
  7. set RemoteServerDir=DbBcakup
  8. if exist \\%RemoteServerIp%\%RemoteServerDir% (goto  auto_bak)  else echo "not exist!!"
  9. :auto_bak
  10. REM 开始远程复制到备份服务器上,需要将冗余服务器的文件夹共享出来。
  11. net use \\%RemoteServerIp%\ipc$ "%RemoteServerPasswd%" /user:"%RemoteServerUser%"
  12. xcopy E:\database.rar \\%RemoteServerIp%\%RemoteServerDir%\ /y
  13. net use \\%RemoteServerIp%\ipc$ /delete
  14. echo "bbb"
  15. GOTO :EOF
复制代码
发现无论是否存在if exist \\%RemoteServerIp%\%RemoteServerDir%,总会执行echo "bbb",且如果我修改成不存在的ip地址,还是会判断net use链接情况,
下面是执行不存在ip结果
E:\>windows-mysql-webschool-backup2.bat
发生系统错误 67。
找不到网络名。
无效驱动器规格
复制了 0 个文件
找不到网络连接。
请键入 NET HELPMSG 2250 以获得更多的帮助。
"bbb"

请大家指教下~~~~~~~

试试 dir 或者 pushd 行吗?

TOP

回复 2# CrLf

用if dir的判断,好像是vb的程序,放在bat中不支持啊。
    @echo off

REM 下面是远程服务器的连接信息ip、用户名、密码和数据库共享文件的名称
set RemoteServerIp=192.168.1.103
set RemoteServerUser=lf
set RemoteServerPasswd=123456

REM 共享文件
set RemoteServerDir=DbBcakup
if Dir("\\%RemoteServerIp%\%RemoteServerDir%“,vbDirectory) = "" Then
echo \\%RemoteServerIp%\%RemoteServerDir% 不存在.
else
goto auto_bak
endif

:auto_bak
REM 开始远程复制到备份服务器上,需要将冗余服务器的文件夹共享出来。
net use \\%RemoteServerIp%\ipc$ "%RemoteServerPasswd%" /user:"%RemoteServerUser%"
xcopy E:\database.rar \\%RemoteServerIp%\%RemoteServerDir%\ /y
net use \\%RemoteServerIp%\ipc$ /delete
echo "bbb"

报错了:
D:\>windows-mysql-webschool-backup.bat
此时不应有 vbDirectory)。

TOP

举俩例子:
  1. dir /ad "\\%RemoteServerIp%\%RemoteServerDir%" >nul 2>nul && echo 存在 || echo 不存在
复制代码
  1. pushd "\\%RemoteServerIp%\%RemoteServerDir%" 2>nul &&(popd&echo 存在)||echo 不存在
复制代码

TOP

返回列表