【问题标题】:How to delete or skip multiline string in a file using batch files如何使用批处理文件删除或跳过文件中的多行字符串
【发布时间】:2014-04-10 15:59:40
【问题描述】:

前- 输入文件-File1.txt 包含-

multiline

String

Mango

Orange

String

Orange

那么输出应该在 File2.txt-

multiline,

Mango

【问题讨论】:

  • 输入文件-File1.txt 包含-
  • 试着解释得更好!你想删除字符串Multiline,在你的ouput.txt中你有multiline。 ??????
  • 文本文件中没有这样的“多行字符串”。一个文本文件由几个单独的行组成。请解释您要遵循的方法以消除某些行...

标签: string batch-file skip multilinestring


【解决方案1】:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "prevline="
(
  FOR /f "delims=" %%a IN ('type q22913138.txt^|sort') DO (
  IF DEFINED prevline IF "%%a"=="!prevline!" ECHO(%%a
  SET "prevline=%%a"
 )
)>tempfile.txt
type q22913138.txt|FINDSTR /v /i /x /g:tempfile.txt >newfile.txt
DEL tempfile.txt 2>nul

GOTO :EOF

我使用了一个名为 q22913138.txt 的文件,其中包含您的数据用于我的测试。 生成 newfile.txt


我做了一些小的调整。

问题似乎是您的数据文件在最后一个Orange 之后没有换行符。不幸的是,很难准确地看到文本帖子的格式。

【讨论】:

  • 我已经试过你的代码,但它仍然没有给我正确的输出。上面代码的输出是-多行芒果橙-->但橙子不应该在那里..我认为脚本有问题。
  • 我想删除在我的 txt 文件中多次出现的字符串... file1.txt 包含- Ram shyam Ravi Ravi Ravi Ram 然后输出应该在另一个文件 file2 中。 txt Shayam,因为它的出现只是一个不超过那个。
  • 是否有任何优化方法可以打印出文件中存在多次的字符串,其中出现次数-输入文件--file1.txt Ram Ram sita Ram 输出应该是--Ram出现 3 次。
  • 上面的代码工作正常..你能告诉我你在哪里学习批处理脚本吗??我是初学者,我想成为这方面的专家。
  • 实践、实践和实践 - 超过 30 年。
【解决方案2】:

对于 file1 中的每个单词(计算该单词的出现次数,如果只有一个(写入 file2)):

@echo off
for /f "delims=" %%i in ("file1.txt") do (
 for /f "tokens=2 delims=:" %%n in ('find /c "%%i" "file1.txt"') do (
  if %%n equ 1 echo %%i >>"file2.txt"
 )
)

edit: ("有没有什么优化方法可以打印出你的文件中出现次数超过一次的字符串--输入文件--file1.txt"

@echo off
echo.>file2.txt
for /f "delims=" %%i in (file1.txt) do (
 for /f "tokens=2 delims=:" %%n in ('find /c "%%i" "file1.txt"') do (
  if %%n equ 1 ( 
   rem echo %%i >>"file2.txt"
  ) else ( 
   find "%%i" "file2.txt">nul ||echo %%i occures %%n times >>"file2.txt"
  )
 )
)

【讨论】:

  • 但是上面的代码也打印了出现一次的字符串。那不应该在那里。请检查一次。它应该只打印那些出现多次的字符串。
猜你喜欢
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2011-11-01
相关资源
最近更新 更多