【问题标题】:Batch file to rewrite txt file starting from last line从最后一行开始重写txt文件的批处理文件
【发布时间】:2019-07-30 08:33:54
【问题描述】:

可以说我有 test.txt 与这行

1
2
3

我需要批处理文件来将此文件重写为

3
2
1

在新的txt文件中

我试过这个来复制最后一行

for /f "delims=" %%A in (ttt.txt) do set last=%%A
echo %last%>>ttt_lastline.txt

这个删除最后一行

@echo off & setlocal EnableDelayedExpansion
set row=
for /F "delims=" %%j in (File.txt) do (
  if  defined row echo.!row!>> File.new
  set row=%%j
)

但没有帮助

【问题讨论】:

  • 文件多长时间?
  • @Magoo 这是 815 线
  • powershell "$c = gc test.txt; $c[$c.length..0]" > reversed.txt 将是我能想到的最简单的解决方案。
  • @rojo:这个单线怎么样?:(for /F "tokens=1*" %%b in ('set i^=1000^&(for /F "delims=" %%a in (test.txt^) do @set /A i-^=1^&echo ^ %%a^)^|sort') do @echo %%c) > reversed.txt
  • 所以你真的要反转文件还是要按降序排序?

标签: batch-file cmd


【解决方案1】:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "destdir=U:\destdir"
SET "filename1=100lines.txt"
SET "outfile=%destdir%\outfile.txt"
SET /a count=0
FOR /f "delims=" %%a IN (%filename1%) DO (
 SET /a count+=1
 SET "line[!count!]=%%a"
)
(
FOR /L %%a IN (%count%,-1,1) DO ECHO(!line[%%a]!
)>"%outfile%"

GOTO :EOF

您需要更改destdir 的设置以适应您的情况。

我使用了一个名为 100lines.txt 的文件,其中包含一些用于测试的虚拟数据。

生成定义为 %outfile% 的文件

使用delayedexpansion,使用!count! 将每一行读入line[?],然后只需echo 以相反的顺序加载每一行。

【讨论】:

  • 我刚试了但没有任何反应我该怎么办?
【解决方案2】:

这是一个 Vbscript 解决方案。

创建一个名为 reverse.vbs 的文件并将其用作代码。

Dim Stack: Set Stack = CreateObject("System.Collections.Stack")

Do While Not WScript.StdIn.AtEndofStream
    Stack.Push WScript.StdIn.ReadLine
Loop

WScript.StdOut.WriteLine Join(Stack.ToArray, vbCrLf)

现在要反转您的文件,请从 cmd 提示符或批处理文件执行此操作。

type input.txt |cscript //nologo Reverse.vbs>>output.txt

【讨论】:

    【解决方案3】:

    @echo 关闭
    setlocal enabledelayedexpansion
    for /f %%a in (forward.txt) 做 (
    设置反转=%%a !反转!
    )
    for %%i in (!reversed!) do echo.%%i >> reversed.txt
    转到:eof

    【讨论】:

      猜你喜欢
      • 2021-05-10
      • 2020-11-05
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多