gpt4 book ai didi

powershell - 如果不合格,如何创建一个 powershell 函数来扩展文件名参数以包含它们的路径?

转载 作者:行者123 更新时间:2023-12-03 17:06:28 27 4
gpt4 key购买 nike

在 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 并试图在顶部的批处理文件中找到与“开始 .... %*”咒语等效的魔法。我相信它必须是一个“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 中找到它。

最佳答案

试试这个:

new-item -path alias:nppapp -value "C:\Program Files (x86)\Notepad++\notepad++.exe"

function npp { nppapp (join-path -Path $pwd -ChildPath $args[0]) }

$pwd 是一个自动变量,以当前工作的path 为值

编辑:

function npp { 
if ($args[0] -match '.:\\.+')
{
nppapp $args[0]
}
else
{
nppapp (join-path -Path $pwd -ChildPath $args[0]) }
}

关于powershell - 如果不合格,如何创建一个 powershell 函数来扩展文件名参数以包含它们的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com