1

我已经在这个脚本上工作了一段时间,而且我是编写批处理文件的新手。我知道我的语法是错误的,需要一些帮助。

@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    
)
4

2 回答 2

2
@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    
)
于 2013-06-25T21:53:49.037 回答
1

正如评论还指出的那样, cmd 希望“do”与前一个表达式的右括号位于同一行。您没有使用延迟扩展。这不是错误,但我认为没有理由打开它。

@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
)
于 2013-06-25T21:26:06.557 回答