CMD中SQLCL单条命令执行闪退问题求助
解决SQLCL单命令执行闪退问题
问题原因
直接将show tns作为命令行参数跟在/nolog后是错误用法——/nolog是让SQLCL进入交互式会话,后续的show tns会被识别为无效的命令行参数,导致程序报错退出;再加上start命令默认启动程序后关闭窗口,所以看不到错误信息。
解决方案
以下几种方法可实现和分步执行一致的效果:
方法1:使用SQLCL的-e参数执行命令并保持窗口
用cmd /k强制保持命令窗口打开,同时通过-e参数传递要执行的命令:
start cmd /k "C:\sqlcl-latest\sqlcl\bin\sql /nolog -e 'show tns'"
执行后,SQLCL会运行show tns命令,窗口不会自动关闭,你可继续操作或查看输出。
方法2:通过批处理文件执行命令
- 创建文本文件并命名为
run_tns.bat,内容如下:
@echo off C:\sqlcl-latest\sqlcl\bin\sql /nolog <<EOF show tns EOF pause
- 执行
start run_tns.bat,窗口会在命令执行完成后暂停,直到你按任意键关闭。
方法3:使用管道传递命令
通过管道将show tns命令输入到SQLCL的交互式会话中,同时用cmd /k保持窗口:
start cmd /k "echo show tns | C:\sqlcl-latest\sqlcl\bin\sql /nolog"
内容的提问来源于stack exchange,提问作者Javi Torre
相关产品推荐
相关产品推荐

