为什么FOR / F“skip = 0”失败?

时间:2011-06-23 10:05:05

标签: batch-file cmd

在标准的Windows批处理文件(.cmd)中,我想这样做:

FOR /F "skip=0" %%G IN (filename.txt) DO ( ECHO %%G )

但我得到" was unexpected at this time.

"skip=1"工作正常(在我的实际代码0中是一个变量)。

根据ss64.com,默认值为skip=0,但在显式设置时似乎无效。

我做错了吗?或者我有可以使用的解决方法吗?

修改

我在Windows Server 2003和Windows 7上都试过这个。

filename.txt的内容可以是:

something
stuff
unicorns

2 个答案:

答案 0 :(得分:6)

它真的不喜欢0,导致解析器在它之后期望更多(你也可以在尝试使用09时将其绊倒,它尝试解析为八进制,失败)。

我想你需要创建一个环境变量来保存整个skip=n部分或什么都没有,并将其插入到参数列表中。像

这样的东西
if %N% GTR 0 (
  set SKIP="skip=%N%"
) else (
  set SKIP=
)

然后使用

for /f %SKIP% %%G ...

(如果您需要传递更多选项,则不带引号)。

答案 1 :(得分:0)

我添加一个“”false“”第一行以避免IF行,并随时保持“跳过”:

::   liste des fichiers du repertoire et de ses sous-repertoires
echo ***   liste des fichiers du repertoire et de ses sous-repertoires >%FicListImg%
dir /s /b /a:-d %RepImg%\*.*  >> %FicListImg%
set compteurA=0
for /f %%a in (%FicListImg%) do set /a CompteurA+=1  
set /a CompteurA = %CompteurA%-1
set /a NbImg = %CompteurA%-1
@echo Repertoire Images : %RepImg%  (%NbImg% images)