我正在尝试循环遍历文件列表并将它们的名称写入单独的文件。我一直收到错误:
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%