“X不被识别为内部或外部命令、可操作的程序或批处理文件”的原因是什么?

“X不被识别为内部或外部命令、可操作的程序或批处理文件”的原因是什么?

我有一个一行代码片段,它在命令行中工作得很好,但是当我作为批处理脚本的一部分运行它时,它会失败并抛出错误。

下面的命令按预期的方式运行,删除文件夹中的所有空子文件夹。

for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do rd "%d"

但是,当放入这样的批处理文件时.

FOR /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"

.抛出标准错误:

排序不被视为内部或外部命令。

我已经做了大约一个小时的实验,没有逃离管道,改变了选项的顺序,查找了这两个选项的文档dirsort等等,但我还是不知道这是怎么回事。批处理文件的其余部分(只有几行)工作正常,这是其中唯一失败的行。

有人能帮忙吗?


白衣非少年
浏览 1145回答 2
2回答

慕码人2483693

很可能,你搞砸了PATH变量。也许您正在您的脚本中的其他地方覆盖它。自sort是一个外部命令,与命令行中的所有其他命令相反,如for, dir, rd,它们是cmd-内部命令,PATH变量以找到命令。如果PATH未定义,则仅在当前工作目录中搜索外部命令。还有一个PATHEXT为可执行文件定义标准文件扩展名所需的变量,如.com, .exe..所以当sort在命令提示符或批处理文件中,系统将搜索当前工作目录和PATH变量,用于具有基名的文件。sort指定的扩展之一。PATHEXT..命令sort实际上被称为sort.exe通常位于C:\Windows\System32.
打开App,查看更多内容
随时随地看视频慕课网APP