1

我编写了一个批处理文件,但我是新手for-loops,我需要它。

我现在知道语法是如何工作的,但我无法弄清楚为什么我的循环没有做它应该做的事情。

此代码是我文件的摘录:

@echo off & setlocal enabledelayedexpansion
set /p file=: 
set /a numberofgoals=0
for /f "delims=" %%a in ("%file%.txt") do set /a "numberofgoals+=1"

echo %numberofgoals%
pause > nul

如果我做对了所有事情,我的输出应该是指定文本文件的长度,并且它以前对我有用,但显然我在代码中更改了一些我不确定的内容,并且%numberofgoals%现在的输出每次都恰好为 1,不管如何我的文本文件很长。

我的问题是:我做错了什么,为什么现在输出 1?我什至不记得在那里改变了一些东西......

编辑:我按照建议更改"delims=""usebackq delims=",现在可以使用了,谢谢。

4

1 回答 1

1

for循环括号中的引号表示“处理此字符串”而不是“读取此文件”。使用该usebackq选项来指示引号提供了文件名:

for /f "usebackq delims=" %%a in ("%file%.txt") do set /a "numberofgoals+=1"

你应该是金色的。

help for在您的窗口中输入cmd血腥细节。

于 2013-04-17T20:23:24.720 回答