首次使用后命令提示符“忘记”命令

时间:2016-10-04 02:56:57

标签: batch-file cmd

我无法弄清楚为什么命令提示会在首次使用后突然忘记某些命令。 我在计算机上创建了一个文件夹来存储我的自定义命令,以使我的生活更轻松。我已将此文件夹添加到我的PATH环境变量中,因此我可以快速访问我的命令。

例如: 运行ipconfig两次或更多次会导致命令每次都按预期工作。 运行别名命令(下面包含的代码)两次或更多次按预期工作。 运行我的deletefolder命令只能第一次运行。第二次它说“删除文件夹”不被识别为内部或外部命令,可操作程序或批处理文件。现在alias命令不再工作(无法识别),但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

别名命令(作者:Benjamin Eidelman,beneidel @ gmail.com)

@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    

1 个答案:

答案 0 :(得分:5)

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

  

create table t_release ( release_id INTEGER(11) NOT NULL AUTO_INCREMENT, code_id INTEGER(11) DEFAULT NULL, code_status_id TINYINT(4) DEFAULT NULL, code_created_date DATETIME DEFAULT NULL, PRIMARY KEY (`release_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8'; INSERT INTO t_release (`release_id`,`code_id`,`code_status_id`,`code_created_date`) VALUES (1, '32', '2', '2016-4-28 8:54'), (2, '32', '3', '2016-4-28 8:55'), (3710, '32', '2', '2016-6-18 10:20'), (4, '33', '2', '2016-4-28 9:54'), (5, '33', '2', '2016-4-28 10:54'), (3711, '33', '2', '2016-6-18 11:20'), (6, '34', '2', '2016-4-28 11:54'), (7, '34', '3', '2016-4-28 0:54'), (3712, '34', '2', '2016-6-18 0:20'); 环境变量包含文件夹列表。当一个   命令在%PATH%提示符处发出,操作系统将首先执行   在当前文件夹中查找可执行文件,如果找不到它   将扫描CMD以找到它。

请勿随意更改%PATH%变量,请使用其他变量名称,例如PATH如下:

_path