배치 파일의 와일드카드를 사용한 문자열 비교

배치 파일의 와일드카드를 사용한 문자열 비교

내 스크립트는 와일드카드(IF 함수)와 함께 작동하지 않습니다! Log.txt는 파일 이름 목록이며, 그 중 일부를 복사해야 합니다. (IF 제외==파일 이름 복사) 나머지(그렇지 않으면 echo *.html)

for /f "usebackq delims=" %%a in (./Log.txt) do (
IF /i %excl1%==%%a set copy=1
IF /i %excl2%==%%a set copy=1
IF /i %excl3%==%%a set copy=1 
IF defined copy (
    echo "%source%\%%a"
    echo "%savedir%\%%a"
    copy "%source%\%%a" "%savedir%\%%a"
    ) else (
    echo "<p><a href=%savedir%\%%a>%%a</a></p>" >> %htmlfile%)
set copy=

)

문제를 해결하기 위한 아이디어?

답변1

너무 많이 변경하지 않고:

@echo off

set "dir=C:\your\directory\Log.txt"
set "htmlfile=C:\your\html\file.txt"
set "source=C:\your\source"
set "savedir=C:\your\saved"

set "excl1=firstexclusion"
set "excl2=secondexclusion"
set "excl3=thirdexclusion"

setlocal enabledelayedexpansion
for /f %%A in (%dir%) do (
    set "file=%%A"
    IF /i !file! == %excl1% (
    set copy=1
    echo "%source%\!file!"
    echo "%savedir%\!file!"
    echo "%source%\!file!" "%savedir%\!file!") ELSE (IF /i !file! == %excl2% (
    set copy=1
    echo "%source%\!file!"
    echo "%savedir%\!file!"
    echo "%source%\!file!" "%savedir%\!file!") ELSE (IF /i !file! == %excl3% (
    set copy=1
    echo "%source%\!file!"
    echo "%savedir%\!file!"
    echo "%source%\!file!" "%savedir%\!file!"
    ) ELSE (
    echo "<p><a href=%savedir%\!file!>!file!</a></p>" >> %htmlfile%
    )))
)

%%A먼저 루프 전체에서 변수로 사용할 수 있도록 지연된 확장을 활성화합니다 . 그런 다음 / 형식을 올바르게 !file!지정하는 것이 문제입니다 . 바라건대 이것이 당신이 원하는 것입니다.IFELSE

관련 정보