我有一个包含此输出的文件:
ANS8000I Server command: 'ru FailedReport'
Unnamed[1]
------------
9
Unnamed[1]
------------
110
Unnamed[1]
------------
101
我需要获取这些数字,并将其分配给三个不同的变量。我制作了这个剧本,但我不能让它起作用......结果总是得到“0”。
@echo off
setlocal enableextensions enabledelayedexpansion
set /A counter=0
SET /A failed=0
SET /A completed=0
SET /A total=0
for /F "tokens=1 skip=4" %%a in (C:\Users\Desktop\Aux.txt) do (
if "%counter%" EQU 5 (set /A failed=%%a)
if "%counter%" EQU 9 (set /A completed=%%a)
if "%counter%" EQU 13 (set /A total=%%a)
set /A counter+=1
)
echo "Failed: " %failed% >> C:\Users\Desktop\Result.txt
echo "Completed: " %completed% >> C:\Users\Desktop\Result.txt
echo "Total: " %total% >> C:\Users\Desktop\Result.txt
有人可以帮我吗?我尝试了很多组合(带有!,%,%%的变量),但我仍然得到了相同的结果。
感谢!!!
答案 0 :(得分:1)
@ECHO OFF
setlocal enableextensions enabledelayedexpansion
set /A counter=0
SET /A failed=0
SET /A completed=0
SET /A total=0
for /F "tokens=1" %%a in (q24152955.txt) do (
ECHO !counter! %%a
if !counter! EQU 3 (set /A failed=%%a)
if !counter! EQU 9 (set /A completed=%%a)
if !counter! EQU 6 (set /A total=%%a)
set /A counter+=1
)
echo "Failed: " %failed%
echo "Completed: " %completed%
echo "Total: " %total%
GOTO :eof
我使用了一个名为q24152955.txt
的文件,其中包含我的测试数据。
在delayedexpansion模式下,%var%
指的是var
的原始值 - 在循环开始执行之前,!var!
是动态值 - 随着它的变化。
"something"
永远不会等于something
因为引号很重要。如果值本身为空或包含特殊字符(尤其是空格),则通常在此上下文中使用带引号的值 - ""
是非空字符串。
for /f
忽略空行。我已经包含了一个多余的echo
命令来显示for
进程的哪些行。请注意,counter
的值因此是文件中非空行的序列号,而不是实际行号。另请注意,只包含一个(或多个)空格的行不为空行!
答案 1 :(得分:0)
@ECHO off&cls
setlocal enabledelayedexpansion
set "$count=1"
for /f "delims=" %%a in (C:\Users\Desktop\Aux.txt) do (
if !$count!==4 set failed=%%a
if !$count!==7 set completed=%%a
if !$count!==10 set total=%%a
set /a $count+=1
)
(echo Failed : %failed: =%
echo Completed : %completed: =%
echo Total : %total: =%)> C:\Users\Desktop\Result.txt