批处理文件在最后再次循环,没有任何变量

时间:2017-05-05 12:53:51

标签: batch-file

有一个批处理文件的问题,我将在vagrant配置前使用(将文件合并到安装脚本中以根据用户输入执行安装),如下所示:

@echo off
copy %CD%\Vagrantfile_base %CD%\Vagrantfile
echo Vagrant Provisionierung
echo 1 - nodejs
echo 2 - Nginx
echo 3 - Qt
echo 4 - Git
echo 5 - gcc
echo a - Alle vorgenannte Software
set /p choice=Mittels Zahlen durch Komma getrennt angeben, was installiert werden soll (Bspw. 1,2,3):
for %%i in (%choice%) do (
    if "%%i"=="1" call :nodejs_install
    if "%%i"=="2" call :nginx_install
    if "%%i"=="3" call :qt_install
    if "%%i"=="4" call :git_install
    if "%%i"=="5" call :gcc_install
    if "%%i"=="a" call :all_install
)
:nodejs_install
copy /b %CD%\software.sh+%CD%\software\nodejs_install.sh software.sh
PAUSE
goto :EOF
:nginx_install
copy /b %CD%\software.sh+%CD%\software\nginx_install.sh software.sh
PAUSE
goto :EOF
:qt_install
copy /b %CD%\software.sh+%CD%\software\qt_install.sh software.sh
PAUSE
goto :EOF
:git_install
copy /b %CD%\software.sh+%CD%\software\git_install.sh software.sh
PAUSE
goto :EOF
:gcc_install
copy /b %CD%\software.sh+%CD%\software\gcc_install.sh software.sh
PAUSE
goto :EOF
:all_install
call :nodejs_install
call :nginx_install
call :qt_install
call :git_install
call :gcc_install
PAUSE
goto :EOF
PAUSE

所以当我执行脚本时,它总是在最后调用nodejs_install,即使我没有选择它而且我不知道为什么。

当我为i添加回声时,它显示为空。

搜索很长时间但没找到任何东西。

也许某人有答案和/或解决此问题?

1 个答案:

答案 0 :(得分:3)

批处理没有真正的子程序;如果你不用GOTO保护一个子程序的入口点来绕过它,它将会#34;通过"进入例程。您需要在GOTO :EOF之后和)之前:nodejs_install