如何将单击的文件完整路径传递给设置为默认程序以打开某些特定文件类型的批处理命令快捷方式
Posted
技术标签:
【中文标题】如何将单击的文件完整路径传递给设置为默认程序以打开某些特定文件类型的批处理命令快捷方式【英文标题】:How to pass clicked file full path to a batch command shortcut that is set as a defualt program to open some specific file types 【发布时间】:2011-10-21 15:59:19 【问题描述】:我有一个批处理命令(设置为打开所有图像文件的默认程序),它运行以下命令
rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1
这可能是为了打开 windows 图片查看器
现在在 %1 中,我必须传递所需的图片,该图片肯定可以从 Windows UI 访问。但是我将如何告诉它应该打开哪个文件?如何在批处理命令的参数中传递双击文件的完整路径,是否有任何环境变量保存最后访问的文件的完整路径?
【问题讨论】:
【参考方案1】:没有。批处理文件有这个问题,但可以避免,因为传递的参数包含特定文件的完整路径。但是,如果完整路径名(将!)包含空格,则必须将参数括在引号中以避免任何错误:
rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen "%1"
另一方面,您也可以将多个文件名拖放到批处理文件中。在这种情况下,您必须通过使用 SHIFT 命令的循环以通常的方式处理它们:
:nextfile
if "%1" == "" goto endfiles
rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen "%1"
shift
goto nextfile
:endfiles
【讨论】:
+1,但if "%1" == "" goto endfiles
应该是if "%~1" == "" goto endfiles
,否则路径中的空格会出现问题,并且文件名总是像me&you.bmp
这样的文件名失败以上是关于如何将单击的文件完整路径传递给设置为默认程序以打开某些特定文件类型的批处理命令快捷方式的主要内容,如果未能解决你的问题,请参考以下文章