我有一个简单的Python脚本,我想在Windows 11中启用拖放文件到Python脚本中。这可行。但是,只有我将Python Launcher设置为Python文件类型的默认应用程序。 双击时,我想启动编辑器。 我的想法是创建一个批处理文件作为Python脚本的默认应用程序,并在没有参数的情况下启动我的编辑器,并在Python Launcher中启动它,如果它具有参数。 我无法完全工作。但是,当创建未自动关闭的编辑器命令窗口时。
test drag.py
:
import sys
import os
if __name__ == "__main__":
test_file_name = os.path.join(os.path.split(sys.argv[0])[0], "test.txt")
if len(sys.argv) > 1:
with open(test_file_name, 'w', newline='\n') as f:
f.write("file names:")
f.write("\n")
for file_path in sys.argv[1:]:
f.write(file_path)
f.write("\n")
else:
with open(test_file_name, 'w', newline='\n') as f:
f.write("no file names")
f.write("\n")
C:\drag\python_drag.cmd
:
@echo off
if not "%~2"=="" (
:: Arguments detected, so files were dragged on it. Calling it with python.
START /B python.exe %*
) else (
:: No arguments detected, so double clicked. Opening it with editor (vscode)
START /B code %1
)
OPEN命令键通过命令行更新:
reg add "HKEY_CLASSES_ROOT\Python.File\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"C:\drag\python_drag.cmd\" \"%L\" %*" /f
SETDROPHANDLER如果需要(如果使用PY Launcher安装最新的Python版本,则应设置它)。
enable_python_drag_and_drop.reg
:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
启动Python窗口短暂打开(您只能看到轮廓),然后关闭自动allatomaticallt。启动VScode时,它将打开一个不关闭的额外窗口。 如何修复它?
Edit: 我想出了如何至少最小化窗口的方法:
START /w /min cmd /c "call code %1"
或:
START /w /min cmd /c "call code.cmd %1"
code
和
code.cmd
。现在是一个文件夹。运行
code.exe
直接解决问题。没有创建窗口。 这是
C:\drag\python_drag.cmd
:
@echo off
if not "%~2"=="" (
:: Arguments detected, so files were dragged on it. Calling it with python.
START /B "" python.exe %*
) else (
:: No arguments detected, so double clicked. Opening it with editor (vscode)
START "" "%LOCALAPPDATA%\Programs\Microsoft VS Code\code.exe" %1
)
exit
它已添加了此命令:reg add "HKEY_CLASSES_ROOT\Python.File\shell\open\command" /ve /t REG_EXPAND_SZ /d "\"C:\drag\python_drag.cmd\" \"%L\" %*" /f