在 Windows 中启动 notepad++ 或许多其他 GUI 应用程序,它们将在命令行上接受文档的完全限定文件名,但如果它们不是完全限定的,则不接受它们,通常在 DOS/Windows 批处理文件中完成,如下所示:
@echo off
start "notepad++" "C:\Program Files (x86)\Notepad++\notepad++.exe" %*
上面,如果保存为“npp.cmd”将让你输入“npp foo.txt”,它会工作。请注意,如果没有 npp.cmd,即使输入 exe 的完整路径,但不完全限定要编辑的文件也不起作用,如下所示:
"C:\Program Files (x86)\Notepad++\notepad++.exe" foo.txt
然而,这确实有效:
"C:\Program Files (x86)\Notepad++\notepad++.exe" c:\users\warren\foo.txt
轻松解决此限制的一种方法是制作一个批处理文件 (.cmd),如该文件顶部所示。我正在学习 PowerShell,并试图在顶部的批处理文件中找到与“start .... %*”咒语等效的魔法。我相信它必须是一个“powershell函数”。
这是我到目前为止所拥有的:
new-item -path alias:nppapp -value "C:\Program Files (x86)\Notepad++\notepad++.exe"
function npp { nppapp $args }
上面是等价的,最后只是一个别名,因为$args
真的不等价%*
,因为它不做参数扩展。我想我需要这样的东西:
new-item -path alias:nppapp -value "C:\Program Files (x86)\Notepad++\notepad++.exe"
function npp { nppapp globexpand($args) }
globexpand
当然,它是一个占位符,用于某种扩展/通配例程,我还没有在 PowerShell 中找到它。