我在批处理脚本输出方面遇到了一些奇怪的问题。我的要求是通过批处理文件(使用sqlplus)运行sql脚本,此SQL脚本的输出将是另一个批处理文件(例如:For_Loop.bat)。批处理文件将包含大约20个FOR循环,如下所示。请注意,在目录路径的末尾有一个换行符,如果没有这个FOR循环不会执行,并且在')之后会有一个换行符。在找到'之后的第二行。
现在我遇到的问题是 - 这个" For_Loop.bat"文件运行正常,有时它会抛出下面的错误。这对我来说看起来像一个换行符问题。这个换行符由SQL查询引入,如下所示。所以你能否发现这里出了什么问题?我不确定为什么这种情况一直没有顺利进行。顺便说一句,这个FOR循环的目的是将最新文件从一个文件夹复制到另一个文件夹。
For_Loop.bat
FOR /F "delims=" %%i IN ('dir "tbl_rec_value1" /b /t:c /o-d') DO ( COPY /Y "tbl_col_value1\%%i" "tbl_rec_value1"
goto found )
:found
FOR /F "delims=" %%i IN ('dir "tbl_rec_value2" /b /t:c /o-d') DO ( COPY /Y "tbl_col_value2\%%i" "tbl_rec_value2"
goto found )
:found
SQL 注意:chr(13)是引入换行符。
select 'FOR /F "delims=" %%i IN ('||''''|| 'dir "'|| tbl_col1 || tbl_col2 || '" /b /t:c /o-d'||''''||') DO ( COPY /Y "'|| tbl_col1 ||'%%i" "' || tbl_col1 || 'Dir_Level2"' || chr(13) || 'goto found )' || chr(13) || ':found' cmd
from tbl;
错误讯息 -
:found was unexpected at this time.
更新
我注意到的另一个奇怪的行为是 -
这告诉我,当SQL输出写入文件导致问题时,会设置一些属性。
如果您发现任何此类事情,请告知我们。
答案 0 :(得分:1)
在每个 chr(10)
之后直接添加chr(13)
。 Windows标准单独是 CR LF 而不是 CR 。将这样的文件加载到编辑器中并保存它可能会添加缺少的 LF s