删除txt文件中每行的前两个字母

时间:2018-12-06 15:56:11

标签: batch-file for-loop cmd

基本上,我通过if(isset($_POST['name']) && $_POST['name']!=""){ // do something } 生成了一个文本文件,其中一个客户端系统上具有所有当前的Windows更新。

文本文件显示为:

public interface IConn
{
    CustomClass CC { get; set; }
}

public class Conn : IConn
{
    public CustomClass CC { get; set; }
}

因此,我希望通过cmd执行命令(即使我必须抓住一些“外部”工具来完成它),以便从每一行的开头删除wmic并离开我只有数字。

我设法通过以下方式“跳” HotFixID KB3140768 KB3150513 KB...(and so on)

KB

但是我无法删除HotFixID

我的想法是,通过cmd / batch文件一次批量删除所有Windows更新。

2 个答案:

答案 0 :(得分:2)

您不需要单独的文本文件,但可以直接在cmd行中解析wmic输出:

> for /f "skip=1delims=KB " %A in ('wmic qfe get HotfixID') do @for /f "delims= " %B in ("%A") do @echo:%B
4100347
4343669
...

在批处理文件中

@Echo off
for /f "skip=1delims=KB " %%A in ('wmic qfe get HotfixID'
   ) do for /f "delims= " %%B in (%%A) do echo:%%B

此简单方法适用于忽略前导定界符并且
只要要解析的内容不包含任何用作delims的字母。

答案 1 :(得分:0)

这是一种可能的解决方案(针对cmd):

for /f "skip=1 delims=KB" %A IN (your_file.txt) do @echo %A >> your_new.txt

对于批处理文件,您必须尝试:

for /f "skip=1 delims=KB" %%A IN (your_file.txt) do echo %%A >> your_new.txt
  • skip=1选项会跳过文件的第一行,即HotFixID

  • delims=KB选项不会将KB解析为令牌。

为更好地理解for命令/循环,请在新的cmd中键入for /?