2013-05-07 105 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 
)