2012-05-09 2 views
0

현재 첫 배치 스크립트를 작성하려고합니다.배치 스크립트 + 다중 변수

그것은 무엇을 : 그것은 특정 폴더에서 모든 파일을 가져오고 RAR에서의 각을두고

  • 는 바탕 화면

에 대한 URL 바로 가기를 생성
  • 지금까지 모든 것이 잘 작동하지만 여기에 문제가 있습니다. 고유 한 URL로 바로 가기를 만들고 싶습니다.

    script.bat http://example.com 
    

    을 그리고 스크립트가 다음을 수행합니다 : 지금 나는 단순히 같은 스크립트를 통해 URL을 전달하고 물론

    SET LINK  =%1 
    
    ::For each file that is in the dir "Ori" 
    FOR %%i IN (%BASEPATH%\Ori\*.*) DO (
    
        echo [InternetShortcut] > "%BASEPATH%\New\%%~ni.URL" 
        echo URL=%LINK% >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconFile=%LINK%/favicon.ico >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconIndex=0 >> "%BASEPATH%\New\%%~ni.URL" 
    
    ) 
    

    이런 식으로 모든 바로 가기 http://example.com으로 이어질 것입니다.

    작성중인 각 바로 가기에 대해 고유 한 URL을 정의하고 싶습니다.

    나는 초보자이기 때문에 어디서부터 시작해야할지 잘 모르고 ... 제안을 원했습니다!

    P. 그냥 당신에게 내가 필요로하는 것이 무엇 생각하지만,이 나던 작업을 제공합니다 :

    script.bat {http://example.com,http://example1.com,http://example2.com} 
    

    를하고 스크립트보다는 두 번째와의 첫 번째 바로 가기 URL 2 URL 하나를 사용해야합니다.

    업데이트 :

    이 잘 이제 다음 jeb's 아래 답변을 작동합니다. 그러나, 나는 또 다른 변수로 같은 일을 다시 할 수 있을지 궁금해했다. 그것은 좀 같이 보이도록 :

    script.bat http://example.com http://example1.com http://example2.com NewVar1 NewVar2 NewVar3 
    

    그리고 NewVar 방금 저장해야 좋아 :

    SET NEWVAR=%2 
    
    의 URL 변수를 완료하고 NewVar 변수를 시작할 때 스크립트가 알고 만들 수있는 방법

    ?

    그리고보다

    !NEWVAR! 
    
  • 답변

    3

    처럼 호출 할 다른 사람이 공백 변수 이름을 만들 SET을 사용할 때 공백을 피해야한다!

    SHIFT 명령을 사용하여 모든 매개 변수를 열거 할 수 있습니다.

    그럼 당신은 모든 매개 변수를 이동합니다

    script.bat http://example.com http://example1.com http://example2.com 
    
    setlocal EnableDelayedExpansion 
    SET LINK=%1 
    
    ::For each file that is in the dir "Ori" 
    FOR %%i IN (%BASEPATH%\Ori\*.*) DO (
    
        echo [InternetShortcut] > "%BASEPATH%\New\%%~ni.URL" 
        echo URL=!LINK! >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconFile=!LINK!/favicon.ico >> "%BASEPATH%\New\%%~ni.URL" 
        echo IconIndex=0 >> "%BASEPATH%\New\%%~ni.URL" 
        shift 
        call set link=%%1 
    
    ) 
    

    SHIFT 같은 것을 사용할 수 있습니다, 그래서 당신은 % 1에 액세스하려면 다음 번에 당신은 다음 매개 변수를 얻을.
    하지만 블록에 나는 여기 CALL %% 트릭을 사용, 그래서 당신은 직접 현재% 1에 액세스 할 수 없습니다.

    블록의 현재 값 LINK에 액세스하려면 지연 확장 (!Link!)을 사용했습니다.

    +1

    +1 그래서 빨리! 나는 왜 내가 귀찮게하는지 모르겠다. ... 하하 – iesou

    +0

    빠른 대답에 감사드립니다! 지금 예상대로 작동합니다 :) 그러나 업데이트 된 질문도 볼 수 있을지 궁금합니다. – Andrej

    +0

    »피하는 것이 너무 부드럽다. ;-) – Joey