请高手指点,自动执行批处理文件问题,急!

wkqzd 2005-12-19 03:51:38
问题描述:
我通过程序,自动生成了一个批处理文件。
批处理文件内容为:

@echo off
SQLPlus
用户名/用户密码@数据库名称
.
.
.
.
.
.

我的目的是通过执行我的批处理文件,自动连接到SQLPlus,并在里面执行我的操作,而实际在执行批处理文件时,停在了“请输入用户名”,如何实现在我的批处理文件里就连上了SQLPlus而不出现这个提示。请高手们赐教!
...全文
474 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
icwin 2006-01-04
  • 打赏
  • 举报
回复
mark
痞子酷 2005-12-28
  • 打赏
  • 举报
回复
我在windows没有试过,但在unix下是这样的:

sqlplus UserName/password@ServerName <<!
@fileName.sql
exit
!


sqlplus UserName/password@ServerName <<!
spool a.txt
select to_char(sysdate,'yyyymmddhh24miss') from dual
exit
!

你试试吧,我没有进行测试。随便写的。


呵呵~~~接分
痞子酷 2005-12-28
  • 打赏
  • 举报
回复
我在windows没有试过,但在unix下是这样的:

sqlplus UserName/password@ServerName <<!
@fileName.sql
!


sqlplus UserName/password@ServerName <<!
spool a.txt
select to_char(sysdate,'yyyymmddhh24miss') from dual
!

你试试吧,我没有进行测试。随便写的。


呵呵~~~接分
痞子酷 2005-12-28
  • 打赏
  • 举报
回复
主要输入
我在windows没有试过,但在unix下是这样的:

sqlplus <<!
@fileName.sql
!


sqlplus <<!
spool a.txt
select to_char(sysdate,'yyyymmddhh24miss') from dual
!

你试试吧,我没有进行测试。随便写的。

呵呵~~~接分
h98458 2005-12-28
  • 打赏
  • 举报
回复
贴这个给大家参考
:)
h98458 2005-12-28
  • 打赏
  • 举报
回复
批处理文件,窗口中显示
完整代码示例:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------
String ExecuteApp(String sCmdline,TMemo *MyMemo)
{
PROCESS_INFORMATION proc = {0};
long ret;//,k=1
bool bret;
STARTUPINFO start = {0};
SECURITY_ATTRIBUTES sa = {0};
HANDLE hReadPipe ;
HANDLE hWritePipe;
String sOutput;
String sBuffer;
unsigned long lngBytesRead;
char cBuffer[257];
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor=0;
sa.bInheritHandle = TRUE;
bret =::CreatePipe(&hReadPipe, &hWritePipe,&sa, 0);
if (!bret)
{
sOutput="CreatePipe failed. Error: " + String(GetLastError());
MyMemo->Lines->Add(sOutput);
return sOutput;
}
start.cb = sizeof(STARTUPINFOA);
start.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
start.hStdOutput = hWritePipe;
start.hStdError = hWritePipe;
start.wShowWindow = SW_HIDE;
sBuffer = sCmdline;
ret =::CreateProcess(0, sBuffer.c_str(), &sa, &sa, TRUE, NORMAL_PRIORITY_CLASS, 0, 0, &start, &proc);
if (ret == 0)
{
sOutput="Bad command or filename";
MyMemo->Lines->Add(sOutput);
return sOutput;
}
::CloseHandle(hWritePipe);
do
{
memset(cBuffer,'\0',sizeof(cBuffer));
ret = ::ReadFile(hReadPipe, &cBuffer, 256, &lngBytesRead, 0);
sBuffer=StrPas(cBuffer);
sOutput = sOutput + sBuffer;
MyMemo->Text=MyMemo->Text+sBuffer;
Application->ProcessMessages();

} while (ret != 0 );
::CloseHandle(proc.hProcess);
::CloseHandle(proc.hThread);
::CloseHandle(hReadPipe);
return sOutput;
}
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//ExecuteApp("ping 127.0.0.1",Memo1);
ExecuteApp("DirCD.bat",Memo1);
}
//---------------------------------------------------------------------------

rudolf_he 2005-12-23
  • 打赏
  • 举报
回复
9494

也让藕们学习学习哈
wkqzd 2005-12-20
  • 打赏
  • 举报
回复
已经搞定了,谢谢楼上的支持!
sydt2000 2005-12-20
  • 打赏
  • 举报
回复
搞定了,那把解决方法公布以下,说不定版主给弄成精华帖呢?
同时别人也可借鉴吗!!!
wkqzd 2005-12-19
  • 打赏
  • 举报
回复
我的意思是:我做了一个加密小工具,对Oracle过程包(含过程、函数、触发器)进行加密(加密机制采用oracle带的wrap工具加密),加密是通过对要加密的文件自动写成批处理文件后,并执行产生加密文件。

而要在工具里自动编译运行加密后的文件(当然可以手工在PLSQL里去编译),我的思路是对要编译的加密文件存成批处理文件后并执行,达到在SQLPlus里自动编译的效果。

批处理文件存成的格式为:
@echo off
SQLPlus 用户名/用户密码@数据库名称
@文件名1;
@文件名n;

但执行批处理文件时到“SQLPlus 用户名/用户密码@数据库名称
”就停住了,并未执行“@文件名1;”……“@文件名1;”。


请各位高手提供好的实现方式,谢谢。

wohow 2005-12-19
  • 打赏
  • 举报
回复
没看懂。
用EXE吧,别用BAT了
wkqzd 2005-12-19
  • 打赏
  • 举报
回复
谢谢楼上的wohow()。
改成:
@echo off
SQLPlus 用户名/用户密码@数据库名称
select count(*) from 表名;

如何执行批处理文件后直接看到其执行SQL语句后而不是要输入执行语句呢?
wohow 2005-12-19
  • 打赏
  • 举报
回复
SQLPlus 用户名/用户密码@数据库名称

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧