2013-06-25 51 views
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  
) 
+0

我还是从代码收到一个错误。 –

+0

尝试用'for/f“delims =”%%我在('reg query'%ports%''') – npocmaka

+0

这对我不起作用@npocmaka –

回答

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  
) 
+0

这个工作除了它删除所有内容只是它找到的字符串@captcha。我有一堆行是c:\\ convertdoc \\ output \\ silentprinttemp \\。* \。ps,我试图删除,但它也是删除像FILE:,LPT1等的东西。 –

+0

对不起。我需要如果不是。 –

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 
)