批处理脚本失败 - 无法在没有引号的情况下将文本输出到文件,但是不需要引号

Batch Script Fails - Cannot output text to file without quotations, however quotation marks are not desired

我正在尝试 运行 一个批处理脚本,该脚本将一堆文本写入一个 .sql 文件,该文件在 SQL 命令中得到 运行 window。我试图让我的批处理脚本输出一行文本:

插入 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