如何使用.bat脚本使用这些sqlite指令创建文件?

时间:2014-02-01 16:18:40

标签: windows sqlite batch-file cmd

我想使用.bat脚本创建下一个sqlite指令,并将它们保存在temp.txt文件中。问题是指令的某些部分是可变的,并且取决于当前目录中的文件列表。

示例:

在我目前的目录中,我有下一个文件:file1.txt,file2.txt,file3.txt以及其他一些我不在乎的文件......

所以我需要创建下一个sqlite句子:

insert into table1(fileName) values('THE VARIABLE FILE NAME');
insert into table2(something1) select (idTable1) from table1 where fileName = 'THE VARIABLE FILE NAME';
.import THE VARIABLE FILE NAME table3

所以句子必须如下:

insert into table1(fileName) values('file1.txt');
insert into table2(something1) select (idTable1) from table1 where fileName = 'file1.txt';
.import file1.txt table3
insert into table1(fileName) values('file2.txt');
insert into table2(something1) select (idTable1) from table1 where fileName = 'file2.txt';
.import file2.txt table3
insert into table1(fileName) values('file3.txt');
insert into table2(something1) select (idTable1) from table1 where fileName = 'file3.txt';
.import file3.txt table3

将保存这些指令的文件名为temp.txt

所以在myScript.bat的最后我想执行这样的事情:

sqlite3 < temp.txt

这些文件中的信息将导入我的数据库。

我已经知道我可以使用下一条指令在我的cmd中列出这些文件:

dir f*.txt /b

我也知道我可以像这样创建一个空文件:

echo. 2> temp.txt

我可以将我想要的文本写入temp.txt文件中,如下所示:

echo TheseAreMyInstructions >> temp.txt

所以myScript应该像这样开始

@echo off // Wont show more info...
echo. 2> temp.txt // Will create the empty file

我试过这样的事情

FOR %%a IN (dir f*.txt /b) DO echo insert into table1(fileName) values('%%a') >> temp.txt

我不知道如何将其他说明放在for

结果不是我所期待的......

我的temp.txt文件中的结果是:

insert into table1(fileName) values('dir') // This should not be here!
insert into table1(fileName) values('file1.txt') 
insert into table1(fileName) values('file2.txt') 
insert into table1(fileName) values('file3.txt') 
insert into table1(fileName) values('/b') // This should not be here!

请帮助我,我真的要这样做......

感谢您的帮助! ;)

1 个答案:

答案 0 :(得分:0)

要为一组文件执行命令,只需指定文件模式:

for %%a in (f*.txt) do (
    echo ...%%a >> sql.txt
    echo %%a... >> sql.txt
)