Batch file 批处理文件-换行符问题

Batch file 批处理文件-换行符问题,batch-file,newline,sqlplus,Batch File,Newline,Sqlplus,我在批处理脚本输出方面遇到了一些奇怪的问题。我的要求是通过批处理文件(使用sqlplus)运行sql脚本,该sql脚本的输出将是另一个批处理文件(例如:For_Loop.bat)。批处理文件将包含大约20个FOR循环,如下所示。请注意,在目录路径的末尾有一个换行符,没有这个换行符,FOR循环将不会执行,并且在“found”之后的第二行“')”后面有一个换行符 现在我面临的问题是——这个“For_Loop.bat”文件有时运行良好,有时会抛出下面的错误。在我看来,这就像是一个换行符问题。此换行符由

我在批处理脚本输出方面遇到了一些奇怪的问题。我的要求是通过批处理文件(使用sqlplus)运行sql脚本,该sql脚本的输出将是另一个批处理文件(例如:For_Loop.bat)。批处理文件将包含大约20个FOR循环,如下所示。请注意,在目录路径的末尾有一个换行符,没有这个换行符,FOR循环将不会执行,并且在“found”之后的第二行“')”后面有一个换行符

现在我面临的问题是——这个“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输出写入For_Loop.bat文件。当我运行这个 对于_Loop.bat文件,由于上述错误而失败
  • 如果我剪切For_Loop.bat的内容,请保存它。将内容粘贴回并再次保存。现在运行时,此批处理文件将成功执行。除剪切/粘贴外,未对For_Loop.bat文件内容进行任何修改
  • 这告诉我,当文件由SQL输出写入时,有一些属性设置导致了问题

    如果您知道任何此类事情,请让我知道。

    在每个
    chr(13)
    后面直接放一个
    chr(10)
    。Windows标准是CRLF,而不仅仅是CR。将这样的文件加载到编辑器中并保存它可能会添加缺少的LFs