【问题标题】:How can I read 2 consecutive lines of a text file and save them as temporary variables如何读取文本文件的 2 行连续并将它们保存为临时变量
【发布时间】:2012-09-07 00:27:03
【问题描述】:

我有带有IDmodeldate 的文件。这些文件的格式类似于10000_9999-99_10-01-2011.zip(其中10000ID9999-99model,当然10-01-2011date)。

我想修改这些文件的dates,但使用相同的ID 保持会话之间的间隔。例如,如果 2 个会话的日期为 1/1/20112/1/2011,并且我想将最后一个会话日期更新为 8/1/2012,则第一个会话的日期为 7/1/2012

目前我的代码如下所示:

@echo off
setlocal enabledelayedexpansion
del filedates.txt
FOR /F "tokens=1,2,3,4,5 delims=_" %%a in (filenames.txt) do @echo %%c >>filedates.txt
FOR /F "tokens=1,2,3 delims=-" %%a in (filedates.txt) do (
  echo %%a%%b
)

输出类似于这个(年月):

201107
201109
201204
etc..

我想读取filedates.txt 中的一行,将此日期存储为变量,然后读取下一行,并将其存储为另一个变量。这样可以比较两个变量,看看哪个更大,然后这个过程会继续。

【问题讨论】:

  • MS-DOS 不支持使用 /F 参数的扩展 for 循环,因此您必须使用 Windows(NT 或更高版本)。
  • 只是出于好奇,因为您显然运行的是相当新版本的 Windows(基于 setlocalfor /f 语法),您是否有理由不这样做PowerShell,这会更容易吗?
  • 我正在编写一个几乎完成的代码。所有这些代码都是使用命令行编写的,否则我会使用 powershell

标签: batch-file text-processing


【解决方案1】:

一次读取两行的一种直接方法是使用for /f 循环逐一处理输入文件中的行,并且仅对偶数行进行“反应”。这是一个示例代码:

@echo off
setlocal enabledelayedexpansion
set evenflag=1
for /f "tokens=*" %%x in (filedates.txt) do set x1=!x2! && set x2=%%x && (
set /a evenflag^^=1 && if !evenflag!==1 (
    rem Do something with !x1! and !x2!
))

这里的变量evenflag 是一个布尔标志,指示当前行号是否为偶数(1 表示偶数行,0 表示奇数行)。 x1x2 保存当前读取的行对。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多