我编写了一个批处理文件,但我是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="
,现在可以使用了,谢谢。
答案 0 :(得分:1)
for
循环括号中的引号表示“处理此字符串”而不是“读取此文件”。使用usebackq
选项指示引号提供文件名:
for /f "usebackq delims=" %%a in ("%file%.txt") do set /a "numberofgoals+=1"
你应该是金色的。
在help for
窗口中输入cmd
以获取血腥详情。