批处理脚本失败 – 无法将文本输出到不带引号的文件,但不需要使用引号

我正在尝试运行批处理脚本,它将一堆文本写入到SQL命令窗口中运行的.sql文件中。 我试图让我的批处理脚本输出一行文字说:

插入到TEST_TABLE(param1,param2)值('JohnSmith','Test1');

我的下面的代码不起作用,CMD只是在运行.bat文件时立即崩溃:

@echo off ( echo insert into TEST_TABLE (param1, param2) values ('JohnSmith','Test1'); ) > TEST.sql pause 

但是,当我更改并添加引号时:

 @echo off ( echo "insert into TEST_TABLE (param1, param2) values ('JohnSmith','Test1');" ) > TEST.sql pause 

当我这样做时,它会按照预期的方式输出文件中的文本行,但是它有引号,我不能在那里,因为这会导致SQL命令失败。

任何人都可以请帮我理解如何让这个脚本输出这个特定的文本到.sql文件没有引号?

谢谢

你有两个选择。 使用set /P命令而不是echo将文本括在引号中(并且显示为不带引号):

 @echo off < NUL ( set /P "=insert into TEST_TABLE (param1, param2) values ('JohnSmith','Test1');" echo/ ) > TEST.sql pause 

……或者用一个插入符号将每个右括号转义出来:

 @echo off ( echo insert into TEST_TABLE (param1, param2^) values ('JohnSmith','Test1'^); ) > TEST.sql pause