Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SqlPlus没有';为什么不能在批处理循环中执行?_Oracle_Batch File_Sqlplus - Fatal编程技术网

Oracle SqlPlus没有';为什么不能在批处理循环中执行?

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

我制作了一个批处理脚本,它递归地遍历目录下的所有.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-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)