首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个批处理代码错误地运行(对于/f)

为什么这个批处理代码错误地运行(对于/f)
EN

Stack Overflow用户
提问于 2014-06-25 02:41:10
回答 1查看 59关注 0票数 0

我有一个未按预期运行的批处理代码。

以下是代码:

代码语言:javascript
复制
@echo off

FOR /F "eol=- tokens=1-11 delims=," %%A IN (1.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (2.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (3.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (10.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (111.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (112.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (113.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (114.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (121.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (122.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv
FOR /F "eol=- tokens=1-11 delims=," %%A IN (123.csv) DO IF %%D==6038000006 ECHO %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K >> 6038000006.csv

结果是,is处理来自1.csv的项目,然后跳过2.csv3.csv,直接转到10.csv111.csv112.csv113.csv114.csv121.csv122.csv123.csv

编辑

这就是问题所在,在尝试上面的代码之前,我正在做这件事。

  1. 我用文件名6038000006.csv创建一个空文件。
  2. 我运行了这个代码: @ /F "eol=- delims==1-11 delims=,“%A%A (1.csv),如果%%D==6038000006回波%A、%B、%C、%D、%E、%F、%G、%H、%I、%J、%K >> 6038000006.csv
  3. 6038000006.csv中充满了数据(实际上数据是日期为文件1.csv是一年的第一季度,2.csv是一年的第二季度,所以我很确定它是有序的)。
  4. 然后我再次运行这段代码,编辑1.csv变成2.csv: @ /F "eol=- delims==1-11 delims=,“%A%A (2.csv),如果%%D==6038000006回波%A、%B、%C、%D、%E、%F、%G、%H、%I、%J、%K >> 6038000006.csv
  5. 因为代码>>在文件底部追加数据。我不认为这是重叠的,而是附加在最后的数据。
  6. 我重复4号直到我完成123.csv
  7. 在重复运行结束时,6038000006.csv包含从1.csv文件到123.csv文件的所有筛选数据。
  8. 现在我想,如果有可能合并来自1.csv的代码而不是单行代码(当然,我将6038000006.csv转移到其他地方,并为这个实验代码创建了一个“新的”空白6038000006.csv (与上面相同))。

但是,结果是来自2.csv3.csv的数据没有反映在新的6038000006.csv上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 02:54:37

首先,您需要弄清楚它是否真的跳过了文件(您没有为这个争用提供支持,所以我们不确定是什么使您这么认为的)。用以下方式注释掉echo off

代码语言:javascript
复制
rem @echo off

然后运行它。执行前应回显已执行的命令。

其次,检查被“跳过”的文件实际上有一些行,其中第四列是6038000006。这可能是因为它们不是被跳过的,而是没有所需的数据。

另一种选择是插入:

代码语言:javascript
复制
dir 6038000006.csv

在每个for循环之后,查看文件是如何变化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24399376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档