通过批处理将 SQL 查询插入文本文件会引发意外的文本错误

通过批处理将 SQL 查询插入文本文件会引发意外的文本错误

我正在尝试循环遍历文件列表并将它们的名称写入单独的文件。我一直收到错误:

values('1' was unexpected at this time.

假设 %path% 指向包含该文件的文件夹MYFILENAME.txt

rem create file
set cmdfile=%temp%\paullog.sql
CD .>%cmdfile% 

rem loop files and write sql insert commands to file
for %%i in (%path%) DO (
    echo insert into aa..xx([url],[filepath],[invoicenum],[dateUploaded],[SentToHost],[GUID],[twodigitcoid]) values('1','https://aaa.com/xcc17%2Freceipt34%2F%%~nxi',null,getdate(),1,newid(),'00'); >> %cmdfile% 
    rem move "%%i" "%savepath%\%hhmmss%_%%~nxi"
)

输出目标文件应该包含(%2F 不是一个错误,而是期望的):

insert into aa..xx([url],[filepath],[invoicenum],[dateUploaded],[SentToHost],[GUID],[twodigitcoid]) values('1','https://aaa.com/xcc17%2Freceipt34%2FMYFILENAME.txt',null,getdate(),1,newid(),'00');

我试过了:

  • 将要插入的整个字符串放在引号内,但这不起作用,因为文件中的输出有引号
  • 通过使用 ^%2F 来转义 %2F(这是想要的),但这没有帮助

答案1

我发现括号导致了问题,所以我使用将其转义^,这意味着 echo 行现在是:

echo insert into aa..xx^([url],[filepath],[invoicenum],[dateUploaded],[SentToHost],[GUID],[twodigitcoid]^) values^('1','https://aaa.com/xcc17%2Freceipt34%2F%%~nxi',null,getdate^(^),1,newid^(^),'00'^); >> %cmdfile%

相关内容