Batch file include external file for variables

后端 未结 9 1056
遥遥无期
遥遥无期 2020-12-04 08:20

I have a batch file and I want to include an external file containing some variables (say configuration variables). Is it possible?

9条回答
  •  攒了一身酷
    2020-12-04 08:58

    Kinda old subject but I had same question a few days ago and I came up with another idea (maybe someone will still find it usefull)

    For example you can make a config.bat with different subjects (family, size, color, animals) and apply them individually in any order anywhere you want in your batch scripts:

    @echo off
    rem Empty the variable to be ready for label config_all
    set config_all_selected=
    
    rem Go to the label with the parameter you selected
    goto :config_%1
    
    REM This next line is just to go to end of file 
    REM in case that the parameter %1 is not set
    goto :end
    
    REM next label is to jump here and get all variables to be set
    :config_all
    set config_all_selected=1
    
    
    :config_family
    set mother=Mary
    set father=John
    set sister=Anna
    rem This next line is to skip going to end if config_all label was selected as parameter
    if not "%config_all_selected%"=="1" goto :end
    
    :config_test
    set "test_parameter_all=2nd set: The 'all' parameter WAS used before this echo"
    if not "%config_all_selected%"=="1" goto :end
    
    :config_size
    set width=20
    set height=40
    if not "%config_all_selected%"=="1" goto :end
    
    
    :config_color
    set first_color=blue
    set second_color=green
    if not "%config_all_selected%"=="1" goto :end
    
    
    :config_animals
    set dog=Max
    set cat=Miau
    if not "%config_all_selected%"=="1" goto :end
    
    
    :end
    

    After that, you can use it anywhere by calling fully with 'call config.bat all' or calling only parts of it (see example bellow) The idea in here is that sometimes is more handy when you have the option not to call everything at once. Some variables maybe you don't want to be called yet so you can call them later.

    Example test.bat

    @echo off
    
    rem This is added just to test the all parameter
    set "test_parameter_all=1st set: The 'all' parameter was NOT used before this echo"
    
    call config.bat size
    
    echo My birthday present had a width of %width% and a height of %height%
    
    call config.bat family
    call config.bat animals
    
    echo Yesterday %father% and %mother% surprised %sister% with a cat named %cat%
    echo Her brother wanted the dog %dog%
    
    rem This shows you if the 'all' parameter was or not used (just for testing)
    echo %test_parameter_all%
    
    call config.bat color
    
    echo His lucky color is %first_color% even if %second_color% is also nice.
    
    echo.
    pause
    

    Hope it helps the way others help me in here with their answers.

    A short version of the above:

    config.bat

    @echo off
    set config_all_selected=
    goto :config_%1
    goto :end
    
    :config_all
    set config_all_selected=1
    
    :config_family
    set mother=Mary
    set father=John
    set daughter=Anna
    if not "%config_all_selected%"=="1" goto :end
    
    :config_size
    set width=20
    set height=40
    if not "%config_all_selected%"=="1" goto :end
    
    :end
    

    test.bat

    @echo off
    
    call config.bat size
    echo My birthday present had a width of %width% and a height of %height%
    
    call config.bat family
    echo %father% and %mother% have a daughter named %daughter%
    
    echo.
    pause
    

    Good day.

提交回复
热议问题