2016-02-18 1 views
1

Я пытаюсь запустить пакетный скрипт, который записывает кучу текста в файл .sql, который запускается в окне командной строки SQL. Я пытаюсь, чтобы мой пакетный скрипт выводил строку текста, которая говорит:Batch Script Fails - Не удается вывести текст в файл без кавычек, однако кавычки не нужны

Вставить в значения 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 без кавычек?

Thanks

+0

Вам нужно бежать правые круглые скобки. – Squashman

+0

'(echo escape '^)' с кареткой.)' – Stephan

+0

Сделайте то же, что предложили другие, вырвавшись из правого парнера или удалив внешние парады и поместив все на одну строку, чтобы у вас было это: вставка эха в TEST_TABLE (param1, param2) ('JohnSmith', 'Test1');> TEST.sql – RGuggisberg

ответ

3

У вас здесь есть два варианта. Используйте 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 
+0

СПАСИБО. Я не мог понять, какой предмет нужно избегать, но теперь, видя, что люди делают правильную круглую скобку, я понимаю, почему и кажется очевидным ... да. – notagoodcoder

+0

Два аккуратных трюка в one.Using set/p для эха и выхода из закрытых кавычек. Использование блока() для перенаправления нагрузок эха одновременно. –