带驱动器号确认的菜单

时间:2010-09-22 09:51:32

标签: batch-file dos boot

我目前正在尝试在Windows之前启动的dos下执行批处理脚本

我试图加载包含引导扇区的img文件,从闪存盘引导到“可引导软盘”并执行名为installer.bat的批处理文件

当批处理文件运行时,它应该要求技术人员验证驱动器号,然后批处理脚本将复制到名为xosl的文件夹到该特定硬盘驱动器,即C:\xosl\ < / p>

这是我到目前为止所做的:

echo OFF
CLS
:MENU
echo .
echo ...............................................
echo                 XOSL Installer
echo ...............................................
echo .

SET /P D=Enter drive letter such as (C:):

IF NOT EXIST %D% GOTO NOWINDIR
   mkdir %D%/xosl/
   xcopy /xosl/*.* %D%/xosl/
   cd %D%/xosl/
   START %D%/xosl/install.exe 
:NOWINDIR
   ECHO Drive does not exists
   GOTO MENU

问题是它一直在反复迭代,这就是为什么我认为我在SET /P内出错...我做错了什么?


更新

这就是我得到的......

...............................................
                XOSL Installer
...............................................

Unable to create directory
Invalid directory
Invalid directory
Syntax Error
A:\>

它不是要我设置目录吗?

3 个答案:

答案 0 :(得分:1)

缩进无效,因此在START %D%/xosl/install.exe之后它会继续:NOWINDIR

您可能想要这样做:

echo OFF
CLS
:MENU
echo .
echo ...............................................
echo                 XOSL Installer
echo ...............................................
echo .

SET /P D=Enter drive letter such as (C:):

IF EXIST %D% (
   mkdir %D%/xosl/
   xcopy /xosl/*.* %D%/xosl/
   cd %D%/xosl/
   START %D%/xosl/install.exe 
) ELSE (
   ECHO Drive does not exists
   GOTO MENU
)

PS:尝试在"%D%"之类的每个变量周围添加引号。您可能只使用此"%D:~0,1%:"获得第一个字母。

答案 1 :(得分:0)

你需要一种方法在它运行时跳转到批处理文件的末尾,因为它只是运行并执行:NOWINDIR代码 - 尝试添加以下内容:

IF NOT EXIST %D% GOTO NOWINDIR
   mkdir %D%/xosl/
   xcopy /xosl/*.* %D%/xosl/
   cd %D%/xosl/
   START %D%/xosl/install.exe
   GOTO END
:NOWINDIR
   ECHO Drive does not exists
   GOTO MENU
:END


另外,echo.echo.之间没有空格)会给你一个空行

答案 2 :(得分:0)

而不是:

echo OFF
CLS
:MENU
echo .
echo ...............................................
echo                 XOSL Installer
echo ...............................................
echo .

SET /P D=Enter drive letter such as (C:):

IF NOT EXIST %D% GOTO NOWINDIR
   mkdir %D%/xosl/
   xcopy /xosl/*.* %D%/xosl/
   cd %D%/xosl/
   START %D%/xosl/install.exe 
:NOWINDIR
   ECHO Drive does not exists
   GOTO MENU

试试这个:

    echo OFF
CLS
:MENU
echo .
echo ...............................................
echo                 XOSL Installer
echo ...............................................
echo .

SET /P D=Enter drive letter such as (C:):

IF NOT EXIST %D% GOTO NOWINDIR
   mkdir %D%\xosl\
   xcopy \xosl\*.* %D%\xosl\
   cd %D%\xosl\
   START %D%\xosl\install.exe 
:NOWINDIR
   ECHO Drive does not exists
   GOTO MENU