中国DOS联盟论坛

中国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