2016-10-04 63 views
3

我不明白爲什麼命令提示符在首次使用後突然忘記某些命令。 我在我的電腦上創建了一個文件夾來存儲我的自定義命令,使我的生活更輕鬆。我已將此文件夾添加到我的PATH環境變量中,以便我可以快速訪問我的命令。第一次使用後命令提示符「忘記」命令

例如: 運行ipconfig兩次或更多次會導致命令每次都按預期工作。 運行別名命令(下面包含的代碼)兩次或更多次按預期工作。 運行我的deletefolder命令兩次只能第一次運行。第二次表示'deletefolder'不被識別爲內部或外部命令,可操作程序或批處理文件。現在,別名命令不能再工作(無法識別),但ipconfig仍然有效。爲了讓我的命令再次運行,我必須重新啓動命令提示符。

我試圖尋找背後的原因,但還沒有找到任何答案這種行爲。感覺這很簡單,但我真的找不到什麼。我盡力做到儘可能徹底,請讓我知道我是否應該澄清任何事情。

的DeleteFolder批處理文件:

@echo off 

set path=%1 

IF DEFINED path (
    GOTO run 
) ELSE (
    GOTO help 
) 

:help 

    echo. Usage: 
    echo. deletefolder [path] 

exit /B 


:run 

    CHOICE /C YN /M "Are you sure?" 
    IF ERRORLEVEL 1 ( 
     :del /f/s/q %path% > nul 
     :rmdir /s/q %path% 
    ) 

exit /B 

alias命令(作者:本傑明Eidelman,[email protected]

@echo off 

set operation=%1 
set aliasname=%2 
set aliasfile=%~dp0%2.cmd 

IF "%~1"=="" GOTO help 
IF /I "%~1"=="list" GOTO listaliases 
IF /I "%~1"=="set" GOTO setalias 
IF /I "%~1"=="get" GOTO getalias 
IF /I "%~1"=="delete" GOTO deletealias 
IF /I "%~1"=="here" GOTO setaliashere 

:help 

echo. Usage: 
echo. alias list      - list available cmd aliases 
echo. alias set [name] [command line] - set an alias 
echo. alias get [name]     - show an alias 
echo. alias delete [name]    - delete alias 
echo. alias here [name] [command line] - create alias cmd on cwd 

exit /B 

:listaliases 

dir /B %~dp0*.cmd 
exit /B 

:setaliashere 

set aliasfile=%2.cmd 

:setalias 

if "%aliasname%"=="alias" (
    echo ERROR: cannot set this alias 
    exit /B 1 
) 

echo %1 %2> "%aliasfile%" 
for %%a in ("%aliasfile%") do set /a length=%%~za 
set /a length=length-1 
set commandline=%* 
setlocal enableDelayedExpansion 
call set commandline=!commandline:~%length%! 
set commandline=%commandline% %%* 
echo %commandline%> "%aliasfile%" 
echo INFO: alias "%aliasname%" set 
exit /B 

:getalias 

if exist %aliasfile% (
    type %aliasfile% 
) ELSE (
    echo ERROR: alias not found 
    exit /B 1 
) 
exit /B 

:deletealias 

if /I "%aliasname%"=="alias" (
    echo ERROR: cannot delete this alias 
    exit /B 1 
) 

if exist %aliasfile% (
    del %aliasfile% 
    echo INFO: alias deleted 
) ELSE (
    echo INFO: alias not found 
) 
exit /B  
+0

只要鍵入'doskey /?'。 – 2016-10-04 03:01:24

回答

5

The PATH environment variable具有非常special (and crucial) meaning

%PATH%環境變量包含一個文件夾列表。當在CMD提示處發出 命令時,操作系統將首先在當前文件夾中查找可執行文件,如果找不到 將掃描%PATH%找到它。

請勿更改PATH變量的任意值,請使用另一個變量名稱,例如, _path如下:

set "_path=%1" 

IF DEFINED _path (
    GOTO run 
) ELSE (
    GOTO help 
) 

rem your script continues here 
+0

哦,我的錯誤是我無意中覆蓋了Path變量? –

+0

我將路徑變量重命名爲路徑,現在事情按預期工作。非常好的接收!十分感謝你的幫助! –