返回

如何在 Windows 命令提示符中模拟拖放,实现蓝牙文件传输?

windows

从 Windows 命令提示符模拟拖放

背景

在 Windows 中,你可以通过右键单击文件并选择 发送到 > 蓝牙设备 来轻松地进行蓝牙文件传输。然而,当我们尝试通过命令提示符手动将文件路径传递给负责蓝牙传输的 fsquirt.exe 程序时,它却无法识别该文件。这篇文章将探索这种差异并提供解决方法。

拖放与命令行之间的差异

当我们拖放文件到 fsquirt.exe 或使用 发送到 菜单时,Windows 会以一种特殊的方式传递文件路径。这个路径不是简单的绝对文件路径,而是一个带有两个部分的列表:

  1. fsquirt.exe 程序的绝对路径
  2. 被传输文件的绝对路径

然而,当我们在命令提示符中手动传递绝对文件路径时,我们只提供了文件的绝对路径,而没有程序的路径。这导致 fsquirt.exe 无法识别该文件。

解决方法

为了解决这个问题,我们需要向 fsquirt.exe 提供完整的路径列表,就像拖放或使用 发送到 菜单时一样。有两种方法可以实现这一点:

方法 1:使用 call 命令

call 命令允许我们从批处理文件中调用另一个程序。我们可以使用它来创建一个批处理文件,该文件首先设置正确的当前工作目录,然后调用 fsquirt.exe 并传递正确的文件路径:

@echo off
cd /d C:\Windows\system32
call fsquirt.exe "C:\path\to\a\file.txt"
pause

方法 2:使用 cmd.exe

我们可以使用 cmd.exe 来创建一个新的命令行 shell,其中当前工作目录已正确设置。然后,我们可以在这个新的 shell 中运行 fsquirt.exe

cmd.exe /c "cd /d C:\Windows\system32 & fsquirt.exe "C:\path\to\a\file.txt""
pause

结论

通过使用 call 命令或 cmd.exe,我们可以从 Windows 命令提示符模拟拖放操作并启动蓝牙文件传输。这使得我们可以自动化文件传输过程,或在命令行脚本中集成蓝牙功能。

常见问题解答

问:我仍然无法通过命令提示符启动蓝牙传输。
答:确保你使用的是正确的 fsquirt.exe 路径,并且你的批处理文件或 cmd.exe 命令正确设置了当前工作目录。

问:我可以使用这种方法传输多个文件吗?
答:可以。在文件路径列表中使用分号 (;) 分隔多个文件。例如:

call fsquirt.exe "C:\path\to\a\file1.txt;C:\path\to\a\file2.txt"

问:这种方法在所有版本的 Windows 上都适用吗?
答:是的,这种方法在 Windows 10、11 及更高版本上都适用。

问:有没有其他方法可以模拟拖放?
答:有其他方法,例如使用 SendInput 函数或编写一个自定义脚本。然而,上述方法通常是最简单、最有效的。

问:我可以使用这种方法做些什么?
答:这种方法可以用于各种自动化任务,例如:

  • 从命令行脚本发送文件
  • 创建蓝牙文件传输服务
  • 探索 Windows 文件管理功能