"hookee"请进!为什么asp执行批处理,copy文件到一个网络共享文件夹失败?

BM01 2008-04-08 05:49:08
在局域网有个共享文件夹,对everyone有读写权限,我将该文件夹映射成本地的F盘。在本地控制台执行批处理文件,成功将本地的文件copy到F盘,批处理文件的内容:
xcopy /s/r/y D:\test\Tcmd\a\*.* f:\

但是如果用asp调用该批处理文件,页面运行无错,但F盘里没东西,copy失败。这是什么原因呢?
(如果批处理命令是从本机copy文件到本机,则无论在控制台还是在asp执行批处理文件,都会成功。
像:xcopy /s/r/y D:\test\Tcmd\a\*.* D:\test\Tcmd\b)

谢谢!
...全文
138 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BM01 2008-04-10
是我的思路错了,这是个下载的应用。
谢谢hookee的耐心解答
回复
hookee 2008-04-09
是的,console是带环境设置的,用asp调用可能一些设置信息没有传递过去。
windows resouce kit
http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en
中有RoBoCopy.exe 可以试试看

如果可能,做成windows application来执行,应该可以的。
回复
BM01 2008-04-09
把vbs里的代码贴到asp里执行也不行...
难道asp执行和本地控制台执行有区别..
回复
hookee 2008-04-09
asp里执行上述代码行不行?
回复
BM01 2008-04-09
不好意思,刚刚才可以上网,我按你说的写了个vbs:

Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec("xcopy /s/r/y D:\test\Tcmd\a\*.* f:\")
Do While oExec.Status = 0
WScript.Sleep 1000
Loop
If Not oExec.StdErr.AtEndOfStream Then
sErrMsg = oExec.StdErr.ReadAll
End If
WScript.Echo sErrMsg
双击执行,可以将文件拷贝到F盘,同时弹出一个msgBox,只有一个"确定"按钮.
但asp执行那个批处理文件的话仍旧不能拷贝成功.
回复
hookee 2008-04-09
调用批处理的话恐怕还会是老问题,最好是把批处理的功能用程序实现
回复
BM01 2008-04-09
谢了,可否提醒一下怎样用windows application来实现?我打算写个dll,调用批处理,
然后在asp里调用dll里面的方法,但现在写的这个dll不能注册:
Public Sub excfile()
Dim excstr
excstr = Shell("D:\test\testC.bat",1)
End Sub
回复
hookee 2008-04-08
1.试试看写个vbs文件,执行下看看行不行
用shell.exec
Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec(sCommandLine)
Do While oExec.Status = 0
WScript.Sleep 1000
Loop
If Not oExec.StdErr.AtEndOfStream Then
sErrMsg = oExec.StdErr.ReadAll
End If
WScript.Echo sErrMsg
看看有没有报错
回复
BM01 2008-04-08
我的asp中的代码为:
<%
Set WshShell = Server.CreateObject("WScript.Shell")
WshShell.Run "D:\test\testC.bat",1,true

%>
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-04-08 05:49
社区公告
暂无公告