Oracle SqlPlus没有';为什么不能在批处理循环中执行?
我制作了一个批处理脚本,它递归地遍历目录下的所有.sql文件。我的问题是,我可以回显使用此版本正确处理的所有文件:Oracle SqlPlus没有';为什么不能在批处理循环中执行?,oracle,batch-file,sqlplus,Oracle,Batch File,Sqlplus,我制作了一个批处理脚本,它递归地遍历目录下的所有.sql文件。我的问题是,我可以回显使用此版本正确处理的所有文件: @for /r "%PWD%\06-Instalaciones" %%a in (*.sql) do (IF "C:%%~pa" NEQ "%PWD%06-Instalaciones\ProximaInstalacion\" echo %%~fa ) 但我似乎无法成功地调用SqlPlus而不是echo,因为处理的每个sql文件: @for /r "%PWD%\06-Instal
@for /r "%PWD%\06-Instalaciones" %%a in (*.sql) do (IF "C:%%~pa" NEQ "%PWD%06-Instalaciones\ProximaInstalacion\" echo %%~fa )
但我似乎无法成功地调用SqlPlus而不是echo,因为处理的每个sql文件:
@for /r "%PWD%\06-Instalaciones" %%a in (*.sql) do (IF "C:%%~pa" NEQ "%PWD%06-Instalaciones\ProximaInstalacion\" %ORACLE_HOME%/bin/sqlplus -L -S FOO/BAR@%sid% @%%~fa)
我得到以下错误:“(主机此时意外)。”
谢谢。感谢angus指出我的错误。我的一个变量中有一个空格!!!特别是在%sid%中。我将把我的代码留在这里,以防有人需要它:
@echo off
@SET PWD=%~dp0
@SET sid=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA=(SERVER=dedicated)(SID=xxxxx)))
@for /r "%PWD%\06-Instalaciones" %%f in (*.sql) do (IF "C:%%~pf" NEQ "%PWD%06-Instalaciones\ProximaInstalacion\" %ORACLE_HOME%/bin/sqlplus -L -S FOO/BAR@"%sid%" @%%~f >> log.txt)
尝试在
%ORACLE_HOME%/bin/..
之前编写echo
,查看命令扩展到什么,以及是否有带空格的参数需要引用。我尝试了u所说的内容,并尝试了%%~fant扩展。如果需要将整个SqlPlus调用括在引号中以使其工作,但SqlPlus不会执行。请尝试使用另一个字母进行检查ple%%G
,因为%%fa
已经有了文件名+属性的含义。如果我重复回显和引用过程,我将得到%G。我在(*.sql)do中尝试了%%f:@for/r”%PWD%\06 Instalaciones%%f(如果“C:%%pf”NEQ”%PWD%06 Instalaciones\proximanstallacion\)%ORACLE_HOME%/bin/sqlplus-L-S FOO/BAR@%sid%@%%~f>>log.txt)