标题: [文件操作] 如果用bat判断远程共享的文件夹是否存在? [打印本页]
作者: 追风之风 时间: 2014-8-7 11:38 标题: 如果用bat判断远程共享的文件夹是否存在?
小弟想用bat判断远程共享的文件夹是否存在,如果存在的话就执行一个函数,如果不存在就输出一句话。
下面是小弟写的一个bat,但是没有达到效果,请大家指教。- @echo off
-
- REM 下面是远程服务器的连接信息ip、用户名、密码和数据库共享文件的名称
- set RemoteServerIp=192.168.1.103
- set RemoteServerUser=lf
- set RemoteServerPasswd=123456
-
- REM 共享文件
- set RemoteServerDir=DbBcakup
- if exist \\%RemoteServerIp%\%RemoteServerDir% (goto auto_bak) else echo "not exist!!"
-
- :auto_bak
- REM 开始远程复制到备份服务器上,需要将冗余服务器的文件夹共享出来。
- net use \\%RemoteServerIp%\ipc$ "%RemoteServerPasswd%" /user:"%RemoteServerUser%"
- xcopy E:\database.rar \\%RemoteServerIp%\%RemoteServerDir%\ /y
- net use \\%RemoteServerIp%\ipc$ /delete
- echo "bbb"
- GOTO :EOF
复制代码
发现无论是否存在if exist \\%RemoteServerIp%\%RemoteServerDir%,总会执行echo "bbb",且如果我修改成不存在的ip地址,还是会判断net use链接情况,
下面是执行不存在ip结果
E:\>windows-mysql-webschool-backup2.bat
发生系统错误 67。
找不到网络名。
无效驱动器规格
复制了 0 个文件
找不到网络连接。
请键入 NET HELPMSG 2250 以获得更多的帮助。
"bbb"
请大家指教下~~~~~~~
作者: CrLf 时间: 2014-8-7 16:15
试试 dir 或者 pushd 行吗?
作者: 追风之风 时间: 2014-8-7 17:33
回复 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)。
作者: CrLf 时间: 2014-8-7 17:47
举俩例子:- dir /ad "\\%RemoteServerIp%\%RemoteServerDir%" >nul 2>nul && echo 存在 || echo 不存在
复制代码
- pushd "\\%RemoteServerIp%\%RemoteServerDir%" 2>nul &&(popd&echo 存在)||echo 不存在
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |