![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 13:21 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何将输入的带>等特殊符号的字符串作为变量值 |
| 可打印版本 976 / 6 |
| 第1楼 cnLiou | 发表于 2008-05-10 04:25 |
| 新手上路 发帖 6 积分 16 | |
|
如何将输入的带>等特殊符号的字符串作为变量值 想通过Set /P var=Input your sql script: 把输入的SQL语句赋值给var, 但涉及到类似如下语句(带有>等特殊符号) 时赋值不成功:
Select * from T_Test t where t.fDate >= to_date('2008-05-01','yyyy-mm-dd'); 如果在特殊符号前加^, 那在输入SQL前会很麻烦, 请高手帮忙看看有没有其它办法可以解决的? 谢谢先. |
|
| 第2楼 HAT | 发表于 2008-05-10 05:02 |
| 版主 发帖 5,017 积分 9,023 | |
|
你是想用批处理连接数据库然后执行SQL吗?可以把SQL放到一个文本文件里面,在批处理中调用就行了。
|
|
| 第3楼 cnLiou | 发表于 2008-05-10 05:19 |
| 新手上路 发帖 6 积分 16 | |
|
本来是用sqlplus直接spool一个sql文件就行了, 但是我想做成bat, 只用一个文件生成sql, 所以在bat中作一个set /p sql=来获取输入的sql, 结果就碰到上面的问题, 关于特殊字符串如何赋值给变量可能会经常遇到, 查了很久没查到, 所以请高手们帮忙支招
|
|
| 第4楼 bat-zw | 发表于 2008-05-10 11:11 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
我的建议: &&批处理对特殊字符特别是&><|感冒啊,建议楼主不要在这上面下大功夫,想想别的办法吧。
|
|
| 第5楼 HAT | 发表于 2008-05-11 06:11 |
| 版主 发帖 5,017 积分 9,023 | |
|
我一般是在BAT中用sqlplus调用sql文件
SQL_call.bat SQL_do.sql 如果非要用一个BAT来实现,恐怕只有手工输入尖括号^进行转义吧? |
|
| 第6楼 plp626 | 发表于 2008-05-11 06:26 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
这个楼主看可否?
http://www.cn-dos.net/forum/viewthread.php?tid=40060 |
|
| 第7楼 cnLiou | 发表于 2008-05-12 22:00 |
| 新手上路 发帖 6 积分 16 | |
|
用了个打开编辑框来处理特殊字符无法输入的问题. 用了个打开编辑框来处理特殊字符无法输入的问题.
该工具可以直接根据SQL根据SQL导出数据到Excel等文件. 共享给大家. @Echo Off Title Oracle数据导出到文件工具 By LIOU Color 0A mode con cols=100 lines=40 PUSHD %CD% SETLOCAL ENABLEDELAYEDEXPANSION Echo ======================================================= Echo Oracle数据导出到文件工具 By LIOU Echo ======================================================= Echo 使用方法: Echo Mstsc.bat [user/pass@oracle] [OutputFileName] Echo ======================================================= Echo. REM 默认值配置 REM --------------- Set userpass= Set oFile=Output.xls REM --------------- REM 默认值配置完成 Set WorkPath=C: :Start IF NOT "%1"=="" ( Set userpass=%1 ) ELSE ( IF "%userpass%"=="" Set /P userpass=Input user and pass@Instante: ) :InputFile IF NOT "%2"=="" ( Set oFile=%2 ) ELSE ( IF "%oFile%"=="" Set /P oFile=Input filename to export: IF "%oFile%"=="" Goto InputFile ) IF EXIST %WorkPath%\%oFile% ( Set /P ch=File %WorkPath%\%oFile% already exist, overwrite[y/n] n: IF /I "!ch!" NEQ "y" ( Set oFile= Goto InputFile ) set ch= ) Set tempFile=%temp%\%date:-=%%time::=%.sql Echo set term off feedback off verify off pagesize 999 set linesize 200>>%tempFile% Echo set markup html on entmap ON spool on preformat off>>%tempFile% Echo define oFile = '%WorkPath%\%oFile%'>>%tempFile% Echo prompt *** Spooling to %WorkPath%\%oFile% *** >>%tempFile% Echo spool %WorkPath%\%oFile%>>%tempFile% Echo --在下面一行输入你要导出的SQL查询脚本,并保存退出文本编辑器......>>%tempFile% Echo 按下任意键输入SQL语句, 并保存退出文本编辑器...... REM Ping -n 2 Localhost>NUL Pause>NUL Start /WAIT Notepad.exe %tempFile% >>%tempFile% Echo. Echo spool off>>%tempFile% Echo $Start %WorkPath%\%oFile%>>%tempFile% Echo Exit>>%tempFile% ECHO. ECHO ---+批处理下使用sqlplus只能导出为txt文本文件,建议在plsql下执行sql可导出为Excel文件。+--- ECHO. sqlplus %userpass% @%tempFile% ECHO 导出数据到文件 %WorkPath%\%oFile% 成功,请核对! ECHO. ECHO. Goto Start |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |