能不能在c语言中调用批处理命令,并让批处理执行窗口后台运行?求编程高手帮助!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能不能在c语言中调用批处理命令,并让批处理执行窗口后台运行?求编程高手帮助!相关的知识,希望对你有一定的参考价值。

我会编写vbs脚本,而且用脚本调用并后台执行批处理文件。但我不知道在c中如何实现。还有,如何用c语言程序调用vbs脚本文件或批处理文件?

参考技术A system("123.vbs");

从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起

【中文标题】从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起【英文标题】:Execute SQL Plus SQL command from batch-cmd window hangs 【发布时间】:2014-04-30 01:17:58 【问题描述】:

我正在尝试在文件中执行 PL-SQL statemtn 并将结果记录到日志文件中。它可以工作,但是 DOS 窗口挂起,我必须手动关闭它。

我是否错误地结束了 SqlPlus 会话?

rem SET TERMOUT OFF; 
SET SqlPlusExe=C:\Oracle\product\11203_32bit\CLIENT_1\bin\sqlplus.exe
SET MyUser=MyID
SET MyPassword=MyPwd
SET Host=RXODSDEV.CIGNA.COM
SET SqlFile=C:\Users\MyLanId\Desktop\SQLPlus\test.sql
SET LogFile=C:\Users\MyLanId\Desktop\SQLPlus\test.log

%SqlPlusExe% %MyUser%/%MyPassword%@%Host% @%SqlFile% >> %LogFile% 
quit;
/

【问题讨论】:

嗯。看起来如果我将“退出”添加到 sql 文件的最后一行就可以了。 您不能将程序的输入放入这样的批处理文件中。你可以试试echo quit; | %SqlPlusExe%... 【参考方案1】:

对于 Windows 脚本,我建议您设置环境变量“LOCAL”(Linux 上的“TWO_TASK”)。该变量将指定您的连接字符串。

set LOCAL=RXODSDEV.CIGNA.COM

REM Create the file to run
@(
   echo connect %MyUser%/%MyPassword% 
   echo @%SqlFile% 
   echo exit^;
) > %TEMP%\run.sql
sqlplus /nolog @%TEMP%\run.sql >> out.log 

但是现在谁在编写 DOS 脚本? Powershell 更有趣!

【讨论】:

这些天没有人在做“DOS”脚本。不再有 DOS。【参考方案2】:

也许你觉得我的启动器脚本有用,看看http://www.unix.com/windows-and-dos-issues-and-discussions/256021-windowss-batch-launcher-oracle-sql-linux-sh-scripts-available-here.html

【讨论】:

以上是关于能不能在c语言中调用批处理命令,并让批处理执行窗口后台运行?求编程高手帮助!的主要内容,如果未能解决你的问题,请参考以下文章

C语言里的system函数都有啥用

C语言如何执行批处理

用C语言调用DOS命令,怎样可以使它不显示一闪的黑框?

C语言 字符串处理函数strtok第二次及以后的调用中第一个参数要用NULL的原因是啥? 能不能解释下原理?

关于C语言执行CMD命令的问题

Dos批处理命令bat文件运行完以后自动关闭dos窗口的方法