2017-04-25 152 views
0

我有一个大的分组具有的有批量编辑.txt文件内容

Files 1 Header 
1. Data 
2. Data 
3. Data 

的基本格局我希望运行批处理将在阅读并取出1号线和文本文件剩余线的三个字符和输出如下。

Data 
Data 
Data 

试图建立一个循环抓住每一行,然后把它通过​​但作为例外,我不知道如何删除文本文件的第一行开始与它不工作。

任何帮助将不胜感激。

回答

2
for %%a in (*.txt) do for /f "skip=1usebackq tokens=1*" %%t in ("%%a") do >>%%~na.new echo %%u 

放在第一空间(缺省定界符)每个文件名匹配*.txt%%a然后读取文件的每一行,跳过所述第一,和tokenise,输出第二(*令牌=其余的行)令牌附加到文​​件名samenameastextfile.new(%%~na.new

这应该创建一个新的文件集处理结果。

0

它看起来像你想处理CSV文件,删除标题行和第一个数据列只包含行号。

这个批处理代码可能会为您的文件格式化的任务是正确的:

@echo off 
for /F "delims=" %%I in ('dir * /A-D /B 2^>nul') do (
    for /F "usebackq skip=1 tokens=1*" %%A in ("%%~I") do echo %%B>>"%%~nI.tmp" 
    move /Y "%%~nI.tmp" "%%~I" 
) 

外部循环运行命令DIR获得在当前目录下的文件名列表,并从该处理的每个文件名列表独立于运行循环时当前目录中的文件会发生什么情况。

由于skip=1,内循环处理当前文件中的每一行,但第一行除外。该行分裂,因为tokens=1*到两个字符串:数量和点被分配到后

  • 与点的数量的空间后,被分配到循环变量A
  • 一切从线/标签下一个循环变量B

分配给循环变量B该字符串是与命令ECHO输出和重定向到具有相同名称的一个临时文件作为当前文件,但文件的扩展名tmp

处理完当前文件的所有行后,将临时文件移动到当前文件上进行替换,即删除当前文件并将临时文件重命名为当前文件的名称。

注1:在当前目录中的文件不应有文件扩展名tmp在这种情况下,一批代码是行不通的。

注2:批处理文件不应该在当前目录中的文件进行修改或大于*其他的东西用在不包括批处理文件也正在处理DIR命令行。

为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • for /?
  • move /?

阅读也是微软文章关于Using Command Redirection Operators