How can I pass arguments to a batch file?

后端 未结 18 2370
陌清茗
陌清茗 2020-11-22 02:53

I need to pass an ID and a password to a batch file at the time of running rather than hardcoding them into the file.

Here\'s what the command line looks like:

18条回答
  •  耶瑟儿~
    2020-11-22 03:19

    Paired arguments

    If you prefer passing the arguments in a key-value pair you can use something like this:

    @echo off
    
    setlocal enableDelayedExpansion
    
    :::::  asigning arguments as a key-value pairs:::::::::::::
    set counter=0
    for %%# in (%*) do (    
        set /a counter=counter+1
        set /a even=counter%%2
        
        if !even! == 0 (
            echo setting !prev! to %%#
            set "!prev!=%%~#"
        )
        set "prev=%%~#"
    )
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
    :: showing the assignments
    echo %one% %two% %three% %four% %five%
    
    endlocal
    

    And an example :

    c:>argumentsDemo.bat one 1 "two" 2 three 3 four 4 "five" 5
    1 2 3 4 5
    

    Predefined variables

    You can also set some environment variables in advance. It can be done by setting them in the console or setting them from my computer:

    @echo off
    
    if defined variable1 (
        echo %variable1%
    )
    
    if defined variable2 (
        echo %variable2%
    )
    

    and calling it like:

    c:\>set variable1=1
    
    c:\>set variable2=2
    
    c:\>argumentsTest.bat
    1
    2
    

    File with listed values

    You can also point to a file where the needed values are preset. If this is the script:

    @echo off
    
    setlocal
    ::::::::::
    set "VALUES_FILE=E:\scripts\values.txt"
    :::::::::::
    
    
    for /f "usebackq eol=: tokens=* delims=" %%# in ("%VALUES_FILE%") do set "%%#"
    
    echo %key1% %key2% %some_other_key%
    
    endlocal
    

    and values file is this:

    :::: use EOL=: in the FOR loop to use it as a comment
    
    key1=value1
    
    key2=value2
    
    :::: do not left spaces arround the =
    :::: or at the begining of the line
    
    some_other_key=something else
    
    and_one_more=more
    

    the output of calling it will be:

    value1 value2 something else

    Of course you can combine all approaches. Check also arguments syntax , shift

提交回复
热议问题