for 루프 ... for 루프에서 ... for 루프에서?


4

따라서 두 개의 가능한 파일 이름을 확인해야하는 여러 위치가 있지만 디렉터리 이름은 다양합니다.

여기에 근본적으로 내가 최적화하려고하는 것이 있습니다.

for /r "%ProgramFiles%\WildGames" %%i in (Uninstall.exe) do ( if exist "%%i" "%%i" /silent ) >nul 2>&1
for /r "%ProgramFiles(x86)%\WildGames" %%i in (Uninstall.exe) do ( if exist "%%i" "%%i" /silent ) >nul 2>&1
for /r "%ProgramFiles%\WildGames" %%i in (Uninstaller.exe) do ( if exist "%%i" "%%i" /silent ) >nul 2>&1
for /r "%ProgramFiles(x86)%\WildGames" %%i in (Uninstaller.exe) do ( if exist "%%i" "%%i" /silent ) >nul 2>&1

단, WildGames뿐만 아니라 다른 위치도 확인해야합니다. 나는 다음과 같은 일을한다.

set wtlist1[0]=%ProgramFiles%
set wtlist1[1]=%ProgramFiles(x86)%

set wtlist2[0]=Acer Games
set wtlist2[1]=ASUS Games
set wtlist2[2]=Dell Games
set wtlist2[3]=Gateway Games
set wtlist2[4]=HP Games
set wtlist2[5]=Lenovo Games
set wtlist2[6]=TOSHIBA Games
set wtlist2[7]=WildTangent
set wtlist2[8]=WildTangent Games
set wtlist2[9]=WildGames

set wtlist3[0]=Uninstall.exe
set wtlist3[1]=Uninstaller.exe

이제 내가 혼란스러워하는 부분이 있습니다. 나는 뭔가를해야한다는 것을 안다 .- 좋아,이 :

for %%a in (wtlist2[0],1,wtlist2[9]) do (
    for %%b in (wtlist1[0],1,wtlist1[1]) do (
        for %%c in (wtlist3[0],1,wtlist3[1]) do (
            echo C:\%%b\%%a\%%c
        )
    )
)

하지만 분명히 정확히는 아니며, 기본적으로 나 자신을이 시점까지 혼란스럽게 만들었습니다. 내 배열이 1 씩 증가하지 않지만, 그렇지 않으면 이것이 작동하는 것처럼 보입니까?

감사!

답변:


4
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
set "wtlist1[0]=%ProgramFiles%"
set "wtlist1[1]=%ProgramFiles(x86)%"

set "wtlist2[0]=Acer Games"
set "wtlist2[1]=ASUS Games"
set "wtlist2[2]=Dell Games"
set "wtlist2[3]=Gateway Games"
set "wtlist2[4]=HP Games"
set "wtlist2[5]=Lenovo Games"
set "wtlist2[6]=TOSHIBA Games"
set "wtlist2[7]=WildTangent"
set "wtlist2[8]=WildTangent Games"
set "wtlist2[9]=WildGames"

set "wtlist3[0]=Uninstall.exe"
set "wtlist3[1]=Uninstaller.exe"

for /L %%a in (0,1,9) do (
    for /L %%b in (0,1,1) do (
        for /L %%c in (0,1,1) do (
            echo "!wtlist1[%%b]!\!wtlist2[%%a]!\!wtlist3[%%c]!"
        )
    )
)

또 다른 접근 방식 :

@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
for %%a in (
    "Acer Games"
    "ASUS Games"
    "Dell Games"
    "Gateway Games"
    "HP Games"
    "Lenovo Games"
    "TOSHIBA Games"
    "WildTangent"
    "WildTangent Games"
    "WildGames"
) do (
    for %%b in (
        "%ProgramFiles%"
        "%ProgramFiles(x86)%"
    ) do (
        for %%c in (
            "Uninstall.exe"
            "Uninstaller.exe"
        ) do (
            echo "%%~b\%%~a\%%~c"
        )
    )
)

자원 (필수 독서) :


정말 고마워! 이것은 완벽 해! 나는 그것의 외모에 의해 노력하고 있었던 것에 아주 가깝다. 그러나 나는 그것을 충분히 이해하지 못했다.
Flux

@JosefZ 나는 당신의 진보 된 일괄 처리 스크립트를 많이 보았고, SU와 SE에 많은 것을 그 때 여기에서 upvoted했다. 그래서 나는 당신이 어떤 입력, 잡았다, 첨단 기법 등이 있습니다. . . superuser.com/questions/1106951/batch-script-redirection-syntax .
Pimp Juice IT

2
for %%a in (one two three) do (
    for %%b in (six seven nine) do (
        echo C:\%%a\%%b
    )
)

필요한만큼 반복하십시오.


감사! 그것은 조금 명확히하지만 불행히도 충분하지는 않습니다. 저는 이것에 대해 아주 새로운 것입니다!
Flux

.. OP로, 중력의 대답은 거의 루프를 실행하여 c : \ 접두어에 추가하여 원하는 위치를 찾을 수있는 $ PATH를 제공합니다.
linuxdev2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.