(TIP)service使用process类调用bat文件时应该注意的一个地方
2006-06-30 11:24
585 查看
需求:没隔一段时间service(假设serivce是部署到d:\service\目录下)调用一下ftp.bat文件
Ftp.bat的内容如下:
它只是调用FTPLoing.txt中已经写好的指令
FTPLoing.txt的内容如下:
非常简单就是把total.zip下载为c:\im.zip
程序关键代码如下:
在一般的winform程序中测试一切ok,能正常下载total.zip
但是在service程序中同样的代码始终不能正常下载total.zip,why?
单步调试winform还是ok,单步调试serivce还是不能正常下载total.zip,没办法在各个地方都记日志
然后仔细分析日志,其中的一行引起我的注意:C:\WINDOWS\system32>ftp -s:FTPLogin.txt test.ftp.com
这不就是执行ftp.bat吗?至此问题找到了,就是执行目录的问题,执行的目录是system32目录,但是ftplogin.txt是在
你的serivce的执行目录下,找不到ftplogin.txt当然下载不成功了.
OK,修改FTP.bat文件,改为如下:
执行成功,至此问题解决.
这种解决方法始终不太理想,不知道是否有其他更好的方法.
Ftp.bat的内容如下:
ftp -s:FTPLogin.txt test.ftp.com
它只是调用FTPLoing.txt中已经写好的指令
FTPLoing.txt的内容如下:
anonymous anonymous@mail.com cd /TEMP/ get TOTAL.ZIP c:\IM.ZIP bye
非常简单就是把total.zip下载为c:\im.zip
程序关键代码如下:
System.Diagnostics.Process p=new System.Diagnostics.Process(); p.StartInfo.FileName=AppDomain.CurrentDomain.SetupInformation.ApplicationBase+"\\ftp.bat"; p.StartInfo.UseShellExecute=false; p.StartInfo.RedirectStandardOutput =true; p.Start(); p.WaitForExit();
在一般的winform程序中测试一切ok,能正常下载total.zip
但是在service程序中同样的代码始终不能正常下载total.zip,why?
单步调试winform还是ok,单步调试serivce还是不能正常下载total.zip,没办法在各个地方都记日志
然后仔细分析日志,其中的一行引起我的注意:C:\WINDOWS\system32>ftp -s:FTPLogin.txt test.ftp.com
这不就是执行ftp.bat吗?至此问题找到了,就是执行目录的问题,执行的目录是system32目录,但是ftplogin.txt是在
你的serivce的执行目录下,找不到ftplogin.txt当然下载不成功了.
OK,修改FTP.bat文件,改为如下:
ftp -s:d:\service\FTPLogin.txt test.ftp.com
执行成功,至此问题解决.
这种解决方法始终不太理想,不知道是否有其他更好的方法.
相关文章推荐
- 使用反射调用匿名内部类时应该注意的一些地方
- 使用资源文件应该注意的地方
- UNION 与LIMIT 结合使用时应该注意的一个地方
- 一个ajax的公共类以及他的使用方式和应该注意的地方
- 使用Java泛型应该注意的几个地方
- 使用ListView应该注意的地方
- 使用Spring AOP应该注意的一个小细节
- fstream对象重复使用时注意clear()的调用,否则会造成打开第二个文件失败
- 使用IntentService给自己的Android应用写一个文件下载器。
- 使用TRY CATCH应该注意的一个小细节
- 使用TextView/EditText应该注意的地方
- 使用ImageView应该注意的地方
- Android Service 的使用(五)----如何实现AIDL文件中含有对象的调用
- C++中方法定义和调用需要注意的一个地方
- 使用TextView/EditText应该注意的地方
- QtCreator使用时需要注意的一个地方。
- C++中方法定义和调用需要注意的一个地方
- 使用TextView/EditText应该注意的地方
- 使用proxool一个非常值得注意的地方
- 使用C#创建WindowsService(Windows服务):定期执行Dos命令或Bat(批处理)文件