为什么拖放和命令行执行批处理文件的方式不同?

为什么拖放和命令行执行批处理文件的方式不同?

好吧,我已经花了几个小时试图解决这个问题,但没有任何进展。我创建了一个批处理文件来获取 VHD 的详细信息。

从命令提示符中的命令行运行时,一切都运行良好并产生预期结果。但是,当我使用文件资源管理器中的拖放功能(将 vhd 文件拖放到批处理文件上)时,批处理文件运行时没有错误,但输出(VHD.INFO)为空。

我困惑了。

编辑后仅包含以下行为:

@echo off
cls
setlocal enabledelayedexpansion
set "_PATH.THIS=%~dp0"

echo HELP | diskpart > %_PATH.THIS%OUTPUT.TMP

TYPE %_PATH.THIS%OUTPUT.TMP
PAUSE

为了演示不同的行为,请从命令行运行批处理文件一次(有效),并通过在文件资源管理器中双击来运行批处理文件(所有管道命令均失败)。

答案1

当您从命令行运行批处理文件时,当前目录就是批处理文件的位置。

当您将文件拖放到批处理文件上时,当前目录就是拖放文件的路径。

为了演示这一点,请尝试使用以下批处理文件:

@echo off
cd
pause

相关内容