Batch file MS Bat文件用户输入发送到文本文件,导致ipconfig失败
我试图创建一个bat文件,请求输入,将输入放入文本文件。然后将ipconfig的结果转储到文本文件的末尾。这是我到目前为止得到的Batch file MS Bat文件用户输入发送到文本文件,导致ipconfig失败,batch-file,Batch File,我试图创建一个bat文件,请求输入,将输入放入文本文件。然后将ipconfig的结果转储到文本文件的末尾。这是我到目前为止得到的 @echo off SET /P User=Type username. @echo %User% >> C:\ipconfig.txt ipconfig >> C:\ipconfig.txt pause 当我运行此命令时,cmd窗口将挂起,文本文件包含此命令 ant Type username. 我做错了什么。请帮忙 万分感谢。 ant犯
@echo off
SET /P User=Type username.
@echo %User% >> C:\ipconfig.txt
ipconfig >> C:\ipconfig.txt
pause
当我运行此命令时,cmd窗口将挂起,文本文件包含此命令
ant
Type username.
我做错了什么。请帮忙
万分感谢。
ant犯了两个错误:
ipconfig.bat
ipconfig
内部时没有文件扩展名和完整路径cmd.exe
在从批处理文件中运行应用程序时,或在示例ipconfig
上指定的命令提示符下执行以下操作,但不指定文件扩展名和完整路径
ipconfig
与内部命令列表(如dir
、echo
、rem
)进行比较。在命令提示窗口中输入
help
,查看标准命令列表,其中并非所有命令都是cmd.exe
的内部命令ipconfig.*
- 如果存在正匹配,它将检查在当前目录中是否找到在
之后追加的环境变量pathText中列出的任何文件扩展名ipconfig.
- 如果PATHEXT中的文件扩展名在附加的
之后与当前目录中的文件名匹配,则执行此文件
ipconfig.
匹配且扩展名列在PATHEXT中的文件,则命令处理器将对环境变量PATH中指定的每个目录递归应用上述搜索ipconfig.bat
和ipconfig.exe
中存在文件扩展名,则PATHEXT中文件扩展名的顺序决定首先执行哪个可执行文件
路径中目录路径的顺序决定了其他目录的搜索顺序
通过打开命令提示窗口并运行set PATH
,可以查看PATH和PATHEXT的值,其中列出了以字符串PATH
开头的所有环境变量
在调用其他批处理文件或应用程序之前,可以在命令提示符下或本地批处理文件中修改PATH和PATHEXT,以更改这些子进程的目录和/或文件扩展名列表,例如IDE在生成过程中调用编译器之前经常做的事情
因此,在本例中,批处理文件ipconfig.bat
在当前目录中执行,而不是在目录%SystemRoot%\System32
中执行
有两种可能的解决方案:
ipconfig.bat
不同的名称ipconfig.exe
在批处理文件中指定了文件扩展名和完整路径@echo off
set /P "User=Type user name: "
echo %User%>"%TEMP%\ipconfig.txt"
set "User="
%SystemRoot%\System32\ipconfig.exe>>"%TEMP%\ipconfig.txt"
type "%TEMP%\ipconfig.txt"
echo.
del "%TEMP%\ipconfig.txt"
pause
或者在没有用户提示的情况下更好:
@echo off
echo User %USERNAME% on computer %COMPUTERNAME%>"%TEMP%\ipconfig.txt"
%SystemRoot%\System32\ipconfig.exe>>"%TEMP%\ipconfig.txt"
type "%TEMP%\ipconfig.txt"
echo.
del "%TEMP%\ipconfig.txt"
pause
我的建议:在批处理文件中,指定应用程序始终以完整路径和文件扩展名执行,即使对于Windows的标准应用程序也是如此,如果可能的话,因为应用程序目录和文件扩展名都是众所周知的。这避免了将来可能出现的问题,因为PATH中的目录列表和/或PATHEXT中的文件扩展名已更改。您调用了批处理文件ipconfig,不是吗?试试别的名字。哈哈。这么简单。谢谢。如果我理解正确的话。它是在调用自身而不是函数。是的。确切地Function=在您的案例中是可执行的。我们都在某个阶段这样做