2014-04-02 37 views
0

我要追加%MYSQL_HOME%\bin%CATALINA_HOME%\bin Windows上的Path系統環境變量,但我想這些只有它們尚未追加追加。如何在命令提示符或批處理腳本中執行此操作?如何附加到路徑,如果沒有附加

+0

有很多簡單的解決方案,但幾乎所有有失敗的可能,這取決於現有的路徑值,以及要追加的路徑。請參閱http://stackoverflow.com/a/8046515/1012053以獲取詳盡的問題列表以及一個強大的解決方案。 – dbenham

回答

1

這裏的另一種解決方案:

path|find /i "%MYSQL_HOME%\bin" >nul || set path=%path%;%MYSQL_HOME%\bin 
path|find /i "%CATALINA_HOME%\bin" >nul || set path=%path%;%CATALINA_HOME%\bin 
0

下面是一個使用臨時文件一個令人費解的做法:

set PATH_BACKUP=%PATH% 
path | findstr "%MYSQL_HOME%\bin" > _tmp.txt 
path=%PATH%;%MYSQL_HOME%\bin 
for /f %%i in (_tmp.txt) do path=%PATH_BACKUP% 
del _tmp.txt 

set PATH_BACKUP=%PATH% 
path | findstr "%CATALINA_HOME%\bin" > _tmp.txt 
path=%PATH%;%CATALINA_HOME%\bin 
for /f %%i in (_tmp.txt) do path=%PATH_BACKUP% 
del _tmp.txt 

更換_tmp.txt與其他一些扔掉的文件名如果需要的話。

這是一個批處理文件。如果從命令行使用,請將%% i替換爲%i。

1
@ECHO OFF 
SETLOCAL 
FOR %%a IN (skipsql skipcat) DO SET "%%a=" 
FOR /f "delims=" %%a IN ('"echo %path:;=&ECHO(%"') DO (
IF /i "%%a"=="%MYSQL_HOME%\bin" SET skipsql=Y 
IF /i "%%a"=="%CATALINA_HOME%\bin" SET skipcat=Y 
) 
IF NOT DEFINED skipsql SET "path=%path%;%MYSQL_HOME%\bin" 
IF NOT DEFINED skipcat SET "path=%path%;%CATALINA_HOME%\bin" 
ECHO new path=%path% 
GOTO :EOF 

這應該適合你。請記住,它只適用於當前的cmd實例 - 它不會傳輸到現有或將來的cmd實例。

0
@echo off 
setlocal EnableDelayedExpansion 

for %%a in ("%MYSQL_HOME%\bin" "%CATALINA_HOME%\bin") do (
    if "!path:%%~a=!" equ "!path!" set "path=!path!;%%a" 
) 

ECHO New path=%path%