将文件中的行数保存为批处理文件中的变量

时间:2014-08-01 22:14:54

标签: variables batch-file

我的批处理文件中有一个非常好的行,告诉我文件中有多少行:

 find /v /c "" C:\Users\c1921\mypath\myfolder\!$Unit!.txt

这很好,给我31个我正在使用的特定文件。我的问题是文件看起来像这样:

 Microsoft (R) Windows Script Host Version 5.8
 Copyright (C) Microsoft Corporation. All rights reserved.

 my_handled
 219278
 check
 219276
 control
 219274

我希望能够完全跳过前三行,然后保存第一个值,然后在下一个命令中使用第二个值等。

如何将数字(例如31)保存到批处理文件中的变量中?

在预感中,我尝试设置一个类似的变量,但它没有效果:

set "$testVar="""
echo !$testVar! 

2 个答案:

答案 0 :(得分:2)

此命令允许您将数字(例如31)保存到我的批处理文件中的变量中":

for /F %%a in ('find /v /c "" ^< C:\Users\c1921\mypath\myfolder\!$Unit!.txt') do set numLines=%%a

此命令允许您完全跳过前三行&#34;并处理其余的事情:

for /F "skip=3 delims=" %%a in (C:\Users\c1921\mypath\myfolder\!$Unit!.txt) do echo Processing: "%%a"

但是,在我看来,如果文本文件中的三个第一行从一开始就被压制,则可以完全避免这个问题。我认为这个文件是通过以这种方式执行的JScript程序的VBScript生成的:

cscript progname.vbs > C:\Users\c1921\mypath\myfolder\!$Unit!.txt

可以避免文本文件中的前三行以这种方式添加//nologo切换:

cscript //nologo progname.vbs > C:\Users\c1921\mypath\myfolder\!$Unit!.txt

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
SET /a count=3
SET "first="
FOR /f "skip=3delims=" %%a IN (q25089468.txt) DO (
 IF DEFINED first (CALL :show %%a) ELSE (SET "first=%%a")
)

ECHO count=%count%

GOTO :EOF

:show
ECHO first=%first% second=%1
SET /a count+=2
SET "first="
GOTO :eof

我使用了一个名为q25089468.txt的文件,其中包含我的测试数据。

您似乎在问两个完全不同的事情 - 如何计算行数以及如何跳过前3行,然后将每个后续行交给另一个流程。