2013-06-25 2 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 ="%% I in ('reg 쿼리 "% 포트 %"')' – 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, ect 같은 것들을 제거하고있다. –

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