Batch file include external file for variables

后端 未结 9 1074
遥遥无期
遥遥无期 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 09:14

    Batch uses the less than and greater than brackets as input and output pipes.

    >file.ext
    

    Using only one output bracket like above will overwrite all the information in that file.

    >>file.ext
    

    Using the double right bracket will add the next line to the file.

    (
    echo
    echo
    )

    This will execute the parameters based on the lines of the file. In this case, we are using two lines that will be typed using "echo". The left bracket touching the right parenthesis bracket means that the information from that file will be piped into those lines.

    I have compiled an example-only read/write file. Below is the file broken down into sections to explain what each part does.

    @echo off
    echo TEST R/W
    set SRU=0
    

    SRU can be anything in this example. We're actually setting it to prevent a crash if you press Enter too fast.

    set /p SRU=Skip Save? (y): 
    if %SRU%==y goto read
    set input=1
    set input2=2
    set /p input=INPUT: 
    set /p input2=INPUT2: 
    

    Now, we need to write the variables to a file.

    (echo %input%)> settings.cdb
    (echo %input2%)>> settings.cdb
    pause
    

    I use .cdb as a short form for "Command Database". You can use any extension. The next section is to test the code from scratch. We don't want to use the set variables that were run at the beginning of the file, we actually want them to load FROM the settings.cdb we just wrote.

    :read
    (
    set /p input=
    set /p input2=
    )

    So, we just piped the first two lines of information that you wrote at the beginning of the file (which you have the option to skip setting the lines to check to make sure it's working) to set the variables of input and input2.

    echo %input%
    echo %input2%
    pause
    if %input%==1 goto newecho
    pause
    exit
    
    :newecho
    echo If you can see this, good job!
    pause
    exit
    

    This displays the information that was set while settings.cdb was piped into the parenthesis. As an extra good-job motivator, pressing enter and setting the default values which we set earlier as "1" will return a good job message. Using the bracket pipes goes both ways, and is much easier than setting the "FOR" stuff. :)

提交回复
热议问题