我的批处理文件中有一个非常好的行,告诉我文件中有多少行:
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!
答案 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行,然后将每个后续行交给另一个流程。