如何使用批处理文件遍历一个内容大致如下的文件(有很多这样的行):
INSERT INTO data.weld VALUES (34, 1, NULL, NULL, 20, 1, 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Стык 113', '12 °С', '113', 6);
INSERT INTO data.weld VALUES (8, 1, NULL, NULL, 6, 1, 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, '2020-08-04 00:00:00+03', 'Стык 1-1', '12 °С', '9-1-1', 1);
INSERT INTO data.weld VALUES (11, 1, 2, NULL, 6, 1, 1, 1, 6, 1, '750*60', '2', 1, '780*8', '3', NULL, NULL, 'Стык 1-4', '10 °С', '9-1-4', 1);
INSERT INTO data.weld_qc_method VALUES (2, 1, 'МИ1', 12, 1, NULL, 15, NULL, 'N', 3);
INSERT INTO data.weld_qc_method VALUES (3, 9, 'НК 1-2', 1, 3, '2020-03-10 00:00:00+03', 15, 24, 'Y', 1);
INSERT INTO data.weld_qc_method VALUES (6, 9, 'НК 1-2-1', 1, 3, '2020-03-10 00:00:00+03', 15, 24, 'Y', 2);
并在“data.table name ”之后添加单词“_temp” ,使文件看起来像这样:
INSERT INTO data.weld_temp VALUES (34, 1, NULL, NULL, 20, 1, 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Стык 113', '12 °С', '113', 6);
INSERT INTO data.weld_temp VALUES (8, 1, NULL, NULL, 6, 1, 8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, '2020-08-04 00:00:00+03', 'Стык 1-1', '12 °С', '9-1-1', 1);
INSERT INTO data.weld_temp VALUES (11, 1, 2, NULL, 6, 1, 1, 1, 6, 1, '750*60', '2', 1, '780*8', '3', NULL, NULL, 'Стык 1-4', '10 °С', '9-1-4', 1);
INSERT INTO data.weld_qc_method_temp VALUES (2, 1, 'МИ1', 12, 1, NULL, 15, NULL, 'N', 3);
INSERT INTO data.weld_qc_method_temp VALUES (3, 9, 'НК 1-2', 1, 3, '2020-03-10 00:00:00+03', 15, 24, 'Y', 1);
INSERT INTO data.weld_qc_method_temp VALUES (6, 9, 'НК 1-2-1', 1, 3, '2020-03-10 00:00:00+03', 15, 24, 'Y', 2);
我试图浏览文件的行并查找子字符串“data.table name ”,如下所示:
@FOR /F %%x IN ('findstr "\<data.*" *.* C:\dump.sql') DO ...
但它不起作用。我究竟做错了什么?
================================================我
附上代码,我不明白为什么它不起作用:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "INTEXTFILE=old_file.txt"
set "OUTTEXTFILE=new_file.txt"
for /f "tokens=1-3*" %%a in ("%INTEXTFILE%") do (if "%%a"=="INSERT" (echo %%a %%b %%c_temp %%d >> "%OUTTEXTFILE%") else (echo %%a %%b %%c %%d >> "%OUTTEXTFILE%"))
del "%INTEXTFILE%"
rename "%OUTTEXTFILE%" "%INTEXTFILE%"
endlocal
遍历文件的行
这是here的另一个答案的示例
一个命令就足够了: