一个很纠结的批处理的问题,请高手帮忙!
我是windows 2008的系统,带域控,大家知道的2008系统有个权限控制问题,就是管理员和非管理员的问题,现在就是这个问题卡壳导致我写的批处理无法执行。
环境如下:
系统:windows 2008+域控
分区:C: D: E: F: ,其中E:是光驱,而F:是其它机器的共享映射到本机的盘符。
本机有一个系统服务,服务名称:“BT DB SERVER”,注意这个系统服务由于当初做软件开发的时候就定义成了这个样子,windows 标准系统服务名称是没有空格的,这个有,且不允许变更服务名称。
我的批处理任务是将“BT DB SERVER”服务停止,然后从F盘copy数据库文件到D盘,然后再恢复“BT DB SERVER”的启动。
问题来了:
1,不知道是什么原因,非管理员运行CMD,那么可以CD或者F:进入F盘,如果是以管理员身份运行CMD,则无法进入F盘,提示:“系统找不到指定的驱动器”。
2,大家知道,windows 2008下通过CMD启动和停止系统服务必须要管理员身份运行,而这样的话由于第1个原因我就又无法进入F:盘复制文件。
3,通过runas命令能以管理员或其他身份执行一条CMD命令,但是我的系统服务名称是“BT DB SERVER”,中间带空格,runas命令语法格式中引号不好嵌套,因此还是无法以管理员身份启动服务。
求解!!!!
附上批处理例子,当然我实际的批处理远不只只操作这点数据,否则我也不用去写批处理了,这里截取只是为了大家方便理解我的意图。
@echo off
@echo 按任意键开始……
@echo.
pause>nul
net stop “BT DB SERVER”
@echo.
@echo 服务停止完毕,按任意键开始复制数据库……
@echo.
pause>nul
xcopy F:/server/db/*.* D:/server/Updata/db /h/y/f
@echo.
@echo 复制完毕,按任意键开始启动服务……
pause>nul
net start “BT DB SERVER”
------解决方案--------------------在批处理里,也映射下 F: 不就可以了?用完之后可以断开映射。
runas 里,引号是可以嵌套的,里面的引号前面加个
\ 即可;runas /? 帮助里应该有示例。
------解决方案--------------------runas 必须要交互式手工输入密码吧。
为什么不能在批处理里也映射下 F: 呢?net use 命令可是支持命令行密码的