在Windows中,您可以通过右键单击文件并选择发送至>来启动文件的蓝牙传输。 蓝牙设备。出现蓝牙文件传输框,然后选择要发送到的设备。我发现通过拖放您要发送到C:\Windows\system32\fsquirt.exe
的文件,我可以达到同样的效果。
要弄清楚当您使用发送到或拖放时Windows如何将文件传递给程序,我编写了以下Python脚本并在C:\Users\<username>\AppData\Roaming\Microsoft\Windows\SendTo
中放置了一个快捷方式。快捷方式的Start In目录是.py
文件的包含目录。 (我使用的是Python 3.6。)
#!python3
import os, sys
print(os.getcwd())
print(sys.argv)
input("Press Enter to exit...")
当我将文件拖放到快捷方式或脚本本身上时,右键单击文件并选择发送到&gt;新的快捷方式,在所有三种情况下都会发生同样的事情:在第一行,Python打印出.py
文件的包含目录,在第二行,Python打印出一个repr
的包含两个元素的列表:.py
文件的绝对路径和我选择的文件的绝对路径。
我编写了以下批处理文件进行测试:
cd C:\folder\of\py\file\
C:\folder\of\py\file\argv_dump.py "C:\path\to\a\file.txt"
当我从命令提示符运行此批处理文件或在Windows资源管理器中双击它时,我从之前获得相同的输出。在第一行,Python打印出.py
文件的包含目录,在第二行,Python打印出包含两个元素的列表的repr
:{{1的绝对路径文件和.py
。
现在,我正尝试从脚本启动Windows 10上的蓝牙传输。我写了一个三行批处理文件进行测试:
C:\path\to\a\file.txt
这似乎不会将cd C:\Windows\system32\
C:\Windows\system32\fsquirt.exe "C:\path\to\a\file.txt"
pause
发送给"C:\path\to\a\file.txt"
。出现蓝牙文件传输对话框,但它仍然要求我选择要发送的文件。在命令提示符窗口中运行这些命令会产生相同的结果。
fsquirt.exe
如何知道拖放或使用发送到之间的区别,以及当我从批处理文件或命令提示符手动传递绝对文件路径时?如何让fsquirt.exe
注意到我提供的文件路径?
我确实查看了this other question,建议检查批处理文件的当前工作目录。但是fsquirt.exe
我的批处理文件中不会处理这个问题吗?