【问题标题】:Using window commands to delete the first two lines of a text file使用 windows 命令删除文本文件的前两行
【发布时间】:2013-06-10 20:56:04
【问题描述】:

谁能提供从文本文件中删除前两行的 Windows 命令或批处理脚本?

我想使用 findstr 删除文本文件的前两行。我不能使用 here 描述的“更多 +2 file.txt > newfile.txt”技巧,因为我通过 xp_cmdshell 调用它,这似乎不起作用(进程经常挂起并创建一个永久锁定的文件我不能删除)。

我听说 findstr 可以使用正则表达式来查找类似的内容,并且我看到了一些使用 bat 文件的尝试。我对这些可能性中的任何一种都持开放态度,但还没有找到可行的解决方案。

【问题讨论】:

  • 可以尝试here 或其他一些建议来回答相同的问题,如果文本文件不是很大,它可能会起作用。
  • @Darth_Continent 尝试了这些建议。他们不工作。

标签: sql-server windows-7 batch-file xp-cmdshell


【解决方案1】:

试试这个:

@echo off &setlocal
set "myfile=%~1"
(for /f "delims=" %%i in ('findstr /n "^" "%myfile%"') do (
    set "line=%%i"
    for /f "delims=:" %%a in ("%%i") do set "row=%%a"
    setlocal enabledelayedexpansion
    set "line=!line:*:=!"
    if !row! gtr 2 echo(!line!
    endlocal
))>newfile
type newfile

顺便说一句。 more 的语法:

<file>newfile more +2

【讨论】:

  • 1) 将findstr 之后的单词file 替换为您的文件名。 2)我进行了编辑,在newfile之前添加了&gt;。
  • 很酷!是否可以将文件名作为参数传递?
  • 当我在批处理中输入我的文件名时,它主要工作。我必须每次都删除新文件,否则结果会再次附加。当我运行批处理时是否可以传入文件名?例如“EndoroBatch.bat myfile.txt”?
  • 是的,现在您可以使用文件名作为参数,newfile 将始终被覆盖。
猜你喜欢
  • 2011-01-29
  • 1970-01-01
  • 2013-10-14
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多