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 に答える