如何强制Windows Comand Prompt逐行将文本输出刷新到文件

时间:2018-06-18 14:27:33

标签: file cmd stdout flush

我尝试使用

记录Windows CE5.0计算机命令提示符中的每个ping
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
import { RegisterComponent } from './register/register.component';
import { UserhomeComponent } from './userhome/userhome.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import {UserService} from './user.service';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    RegisterComponent,
    UserhomeComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    ReactiveFormsModule,
    HttpClientModule
  ],
  providers: [UserService],
  bootstrap: [AppComponent]
})
export class AppModule { }

文件以单行输出开头,然后在按下&c; ctrl + c'后才刷新。

我想知道是否有办法强制它在每一个新行中打印。

1 个答案:

答案 0 :(得分:0)

我不知道有什么直接的方法可以做到这一点。

但你可以通过在(无限)循环中执行单个ping请求并在循环中写入日志文件来解决这个问题,如下所示:

for /L %I in () do @(timeout 1 > nul & ping 192.168.1.1 -n 1 -l 60000 | find "TTL=" >> "ping.txt")

timeout 1命令在每次循环迭代中建立一秒延迟,以避免繁重的CPU负载,> nul抑制其控制台输出。

find命令用于从肯定回复中过滤包含TTL的行(例如Reply from 192.168.1.1: bytes=60000 time<1ms TTL=128)。如果需要,您可以将其更改为findstr /B /C:"Reply from " /C:"Request " /C:"Ping request ",例如,捕获肯定回复以及Request timed out.Ping request could not find host ...等否定回复,或者您可以将其完全删除(也可以{ {1}})将整个|响应写入文件,包括页眉和页脚。