2017-05-05 40 views
0

有一个批处理文件的问题,我会用在流浪汉配置(将文件合并到安装脚本以执行安装,这取决于用户输入),它看起来像这样的:批处理文件循环再次结束时没有任何变量

@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即使我没有选择它,我不知道为什么。

当我为我添加一个回显它显示为空。

寻找很长,但没有发现任何东西。

也许有人对此有一个答案和/或修复?

回答

3

批处理没有真正的子程序;如果你不保护一个子程序的入口点以避开它,那么它将会进入例行程序。您需要在)之后和:nodejs_install之前的GOTO :EOF