语法问题在批处理

我一直在处理这个脚本一点,我是新的编写batch file。 我知道我的语法是错误的,需要一些帮助。

@echo off setlocal enabledelayedexpansion set "ports=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" for /f %%I in ( 'reg query "%ports%"') do ( echo %%I | findstr /i "c:\\convertdoc\\output\\silentprinttemp\\.*\.ps" >NUL IF ERRORLEVEL 1 reg delete "%ports%" /v "%%I" /f ) 

 @echo off setlocal set "ports=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" for /f %%I in ( 'reg query "%ports%"' ) do ( echo %%I | findstr /i "c:\\convertdoc\\output\\silentprinttemp\\.*\.ps" >NUL IF ERRORLEVEL 1 reg delete "%ports%" /v "%%I" /f ) 

正如注释也指出的那样,cmd希望在上一个表达式的右括号的同一行上“做”。 你没有使用延迟扩展。 这不是一个错误,但我没有理由打开它。

 @echo off setlocal set "ports=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" for /f %%I in ( 'reg query "%ports%"' ) do ( echo %%I | findstr /i "c:\\convertdoc\\output\\silentprinttemp\\.*\.ps" >NUL IF ERRORLEVEL 1 reg delete "%ports%" /v "%%I" /f ) 

奇怪的是,这个实验工作:

 FOR /F %%i IN ( 'dir /b' ) DO ( @ECHO %%i )