0

我正在尝试创建一个批处理文件,该文件将目录的路径设置在前面,或者将其从默认路径添加到路径的后面。要将目录放在前面,请放置 /f 或 /F,而要将其添加到后面,则不要包含 /f 或 /F。每次我使用示例目录时,当我在前面使用 /f 或不使用它时,它只是将它放在前面。请帮我更正。谢谢。

@ECHO OFF
ECHO Press Y or y for an explanation on how to use this file.
ECHO Press N or n to continue without help.
REPLY64
:TOP
IF "%1"=="" GOTO DEFAULT
IF NOT "%1"=="" GOTO ADD
IF NOT "%1"=="" GOTO ADD
IF "%1"=="/f" GOTO FRONT
IF "%1"=="/F" GOTO FRONT
IF ERRORLEVEL 121 GOTO F1
IF ERRORLEVEL 110 GOTO TOP
IF ERRORLEVEL 89 GOTO F1
IF ERRORLEVEL 78 GOTO TOP
:F1
ECHO SETPATH /F subdirectory1 subdirectory 2 or SETPATH /f subdirectory1   subdirectory 2.
ECHO The /F or /f tells the batch file to add the subdirectory name in front of the existing path.
ECHO If the command is keyed in without /F or /f, each subdirectory will be added to the end.
GOTO END
:ADD
IF "%1"=="" GOTO END
PATH= %PATH%;%1
SHIFT
GOTO ADD
:FRONT
SHIFT
IF "%1"=="" GOTO END
PATH=%1;%PATH%
GOTO FRONT
:DEFAULT
CALL \MYPATH.BAT
:END
4

3 回答 3

1

我不能对这个问题做出任何回答。

reply64什么?没有迹象。也许它设置errorlevel了一些东西。

然后让我们看看这三行:

IF "%1"=="" GOTO DEFAULT
IF NOT "%1"=="" GOTO ADD
IF NOT "%1"=="" GOTO ADD

现在 - 如果第一个参数不存在,请转到:default. 美好的。但这有什么作用?CALL c:\mypath.bat- 这是什么?这个文件?假设它是,那么它将重新执行没有参数的批处理。

假设第一个参数存在?接下来的两行是相同的,因此应该转到- 应该在行的(末尾)ADD添加参数,而不是(行的开头 - 正如编码所暗示的那样。)但是报告是参数正在在. 鉴于我们在此处发布的内容,它无法访问该代码。BACKFRONTfront

于 2013-05-08T07:21:43.387 回答
0

这将按照您的描述进行。如果使用 /f,它会将 %2 添加到路径的前面,否则它将添加 %1 到路径的末尾。

@echo off
if /i "%~1"=="/f" (
set path=%~2;%path%
) else (
set path=%path%;%~1
)
于 2013-05-08T09:01:57.737 回答
0
IF NOT "%1"=="" GOTO ADD
IF NOT "%1"=="" GOTO ADD
IF "%1"=="/f" GOTO FRONT
IF "%1"=="/F" GOTO FRONT

前两个也应该有/F/f。否则没有意义。

此外,您应该将errorlevel检查移到参数检查之前

于 2013-05-07T22:00:36.017 回答