更改路径后,批处理超时不起作用?

时间:2018-04-13 09:46:58

标签: batch-file cmd

我是cmd的新手。我创建了一个文件来创建文件夹和子文件夹。我放了一些timeout。第一个timeout正在工作,但其他时间不起作用,不知道为什么。是因为改变了path。我已经在CMD中逐行检查了。在CMD中它工作正常。

输入:

timeout /t 5

@echo off
set path=C:\Users\bruce\Documents\Project-Gallary
cd %path%
@echo "Welcome master Bruce !"
@echo "Recommended Project Folder Name: G01-Global-Report/C01-Compliance"
echo %PATH%
timeout /t 10
@echo " *** Try not the put space in Folder Name"
set /p ProjectName="What is the project name? "

输出:

C:\Users\bruce\Desktop>timeout /t 5

Waiting for 0 seconds, press a key to continue ...
"Recommended Project Folder Name: G01-Global-Report/C01-Compliance"
C:\Users\bruce\Documents\Project-Gallary
'timeout' is not recognized as an internal or external command,
operable program or batch file.
" *** Try not the put space in Folder Name"
What is the project name?

2 个答案:

答案 0 :(得分:4)

重大错误,您正在更改系统变量PATH

系统变量路径列出了可执行文件的所有路径,您通过设置set path=C:\Users\bruce\Documents\Project-Gallary更改了它,现在又找不到其他cmd了。

请尝试使用此版本,首先关闭所有cmd.exe窗口,以清除所有set个命令。

@echo off
set "mypath=C:\Users\bruce\Documents\Project-Gallary"
cd %mypath%
@echo "Welcome master Bruce !"
@echo "Recommended Project Folder Name: G01-Global-Report/C01-Compliance"
echo %PATH%
timeout /t 10
@echo " *** Try not the put space in Folder Name"
set /p ProjectName="What is the project name? "

修改

基于@ npocmaka的评论。如果您确实想要添加系统路径变量的路径,那么只需将set path行替换为:

set "PATH=%PATH%;C:\Users\bruce\Documents\Project-Gallary"

答案 1 :(得分:1)

您的问题的答案是肯定的,因为您已更改path

环境变量%Path%包含在“无路径”的情况下搜索的位置。可执行文件不在当前工作目录中。

系统还包含另一个名为%PATHEXT%的变量,其中包含一个可执行文件扩展名列表,后缀为文件名(以列出的顺序排列),如果文件没有调用扩展名但未找到。

如果要查看这两个变量的值,请打开命令提示符并输入Set Path

当您的脚本进入第二个Timeout命令时,它会在当前工作目录中搜索名为Timeout的任何文件以及%PATHEXT%中列出的任何扩展名。如果找不到,它会同样搜索%Path%中的每个位置,在您的情况下为C:\Users\bruce\Documents\Project-Gallary; (由于未找到timeout,您收到了错误消息)

Timeout命令实际上是timeout.exe,它应位于\Windows\System32中。如果您没有更改%Path%变量的位置,(以系统驱动器号开头),则在%Path%环境变量的值中定义,并找到相应的可执行文件

因此,除非绝对必要,否则您的解决方案应避免设置名为%Path%%PATHEXT%的变量,例如: Set "lPath=C:\Users\bruce\Documents\Project-Gallary"。您也可以忽略该建议并使用带扩展名的绝对路径,例如C:\Windows\System32\timeout.exe /t 10。最后,如果脚本需要,您可以将位置(或扩展名)集成到那些现有的分号分隔变量列表中,例如: Set "Path=%Path%;C:\Users\bruce\Documents\Project-Gallary"