2013-05-07 66 views
0

我正尝试创建一个批处理文件,该文件在前面设置目录的路径或将其添加到默认路径的后面。要将目录置于前面,需要放置/ f或/ F,并将其添加到后面,但不包含/ f或/ F。每次我使用示例目录时,只要在前面使用/ f或不使用它,就会将它放在前面。请帮我修改。谢谢。路径批处理文件Windows命令行

@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 
+0

该代码应将所有目录放在后面,而不是前面。你可能想检查一下,并调整你的问题的措辞。 – paxdiablo 2013-05-07 22:13:46

回答

0
IF NOT "%1"=="" GOTO ADD 
IF NOT "%1"=="" GOTO ADD 
IF "%1"=="/f" GOTO FRONT 
IF "%1"=="/F" GOTO FRONT 

那些前两个也应该有他们/F/f。否则它是没有意义的。

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

1

我可以让这个问题的头不是尾巴。

Waht是reply64?没有迹象。也许它设置errorlevel的东西。

那么让我们来看看这三条线:

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

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

并假设第一个参数存在?接下来的两行是相同的,因此应该去ADD--它应该在行的BACK(末尾)加上参数,而不是FRONT(开始行 - 如编码暗示的那样)。然而,报告是参数正在添加在front。没有办法,它可以达到该代码 - 给我们发布在这里。

+0

+1,但让我们来看看,如果OP可以接受你的回答:) – Endoro 2013-05-08 08:17:59

0

这将做你所描述的。如果使用/ f,它会将%2添加到路径的前面,否则会将%1添加到路径的末尾。

@echo off 
if /i "%~1"=="/f" (
set path=%~2;%path% 
) else (
set path=%path%;%~1 
)