我想使用.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!
请帮助我,我真的要这样做......
感谢您的帮助! ;)
答案 0 :(得分:0)
要为一组文件执行命令,只需指定文件模式:
for %%a in (f*.txt) do (
echo ...%%a >> sql.txt
echo %%a... >> sql.txt
)