假设我有这行的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
)
但没有帮助
答案 0 :(得分:2)
@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
,使用line[?]
将每一行读入!count!
,然后以相反顺序加载每行echo
。
答案 1 :(得分:1)
这是一个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
答案 2 :(得分:-1)
@echo off
setlocal enabledelayedexpansion
为(forward.txt)中的/ f %% a做
(
设置反转= %% a!反转!
)
(!reversed!)中的%% i做echo。%% i >> reversed.txt
转到:eof