|
cnLiou
新手上路
积分 16
发帖 6
注册 2008-5-10
状态 离线
|
『楼 主』:
如何将输入的带>等特殊符号的字符串作为变量值
想通过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前会很麻烦, 请高手帮忙看看有没有其它办法可以解决的? 谢谢先.
|
|
2008-5-10 04:25 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
2 楼』:
你是想用批处理连接数据库然后执行SQL吗?可以把SQL放到一个文本文件里面,在批处理中调用就行了。
|
|
2008-5-10 05:02 |
|
|
cnLiou
新手上路
积分 16
发帖 6
注册 2008-5-10
状态 离线
|
『第
3 楼』:
本来是用sqlplus直接spool一个sql文件就行了, 但是我想做成bat, 只用一个文件生成sql, 所以在bat中作一个set /p sql=来获取输入的sql, 结果就碰到上面的问题, 关于特殊字符串如何赋值给变量可能会经常遇到, 查了很久没查到, 所以请高手们帮忙支招
|
|
2008-5-10 05:19 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
4 楼』:
我的建议:
&&批处理对特殊字符特别是&><|感冒啊,建议楼主不要在这上面下大功夫,想想别的办法吧。
|
批处理之家新域名:www.bathome.net |
|
2008-5-10 11:11 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
5 楼』:
我一般是在BAT中用sqlplus调用sql文件
SQL_call.bat
@echo off
sqlplus /nolog @SQL_do.sql
exit SQL_do.sql
--Use your own username, password, database
CONN username/password@database
SPOOL C:\result.xls
--Use your own SQL
SELECT SYSDATE FROM DUAL;
SPOOL OFF
EXIT 如果非要用一个BAT来实现,恐怕只有手工输入尖括号^进行转义吧?
|
|
2008-5-11 06:11 |
|
|
plp626
银牌会员
钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
『第
6 楼』:
这个楼主看可否?
http://www.cn-dos.net/forum/viewthread.php?tid=40060
@echo off
call:ReversOut "12345&6" strs
::这种方法兼容特殊字符,但会过滤引号。
set/p "tt=%strs%"<nul
echo\&pause
exit
:: /*-------ReversOut--------------
:ReversOut ["string"] [string]
setlocal ENABLEEXTENSIONS
set "str=%~1"
:ReversOut_1
set "strs=%str:~0,1%%strs%"
set "str=%str:~1%"
if defined str goto:ReversOut_1
endlocal&set "%2=%strs%"&goto:eof
:: ---------ReversOut------------*/
@echo off||以行首文字重命名txt
for %%a in (*.txt)do call:renm "%%a"
exit
:renm
set "n=" :初始化n,一便n从1开始递增。
set/p t=<"%~1"
set t=%t:.=%
set t=%t:/=%
set t=%t:\=%
set t=%t:?=%
set t=%t::=%
set t=%t:;=%
set t=%t: =%
set t=%t:^*=%
set "t=%t:^<=%"
set "t=%t:^>=%"
set "t=%t:^|=%"
ren "%~1" "%t%%n%.txt"||set n=0&goto:renm1
exit/b
:renm1
set/a n+=1
ren "%~1" "%t%_%n%.txt"||goto:renm1
exit/b
@echo off
for %%a in (*.txt)do call:renm "%%a"
exit
:renm
set/p t=<"%~1"
set t=%t:.=%
set t=%t:/=%
set t=%t:\=%
set t=%t:?=%
set t=%t::=%
set t=%t:;=%
set t=%t: =%
set t=%t:^*=%
set "t=%t:^<=%"
set "t=%t:^>=%"
set "t=%t:^|=%"
ren "%~1" "%t%.txt"||ren "%~1" "%t%_1.txt"||ren "%~1" "%t%_2.txt"||ren "%~1" "%t%_3.txt"
|
山外有山,人外有人;低调做人,努力做事。
进入网盘(各种工具)~~ 空间~~cmd学习 |
|
2008-5-11 06:26 |
|
|
cnLiou
新手上路
积分 16
发帖 6
注册 2008-5-10
状态 离线
|
『第
7 楼』:
用了个打开编辑框来处理特殊字符无法输入的问题.
用了个打开编辑框来处理特殊字符无法输入的问题.
该工具可以直接根据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
|
|
2008-5-12 22:00 |
|