我在 中安装了许多实用程序C:\program files (x86)\git\bin
,其中许多都隐藏了内置命令行功能。为了避免发生冲突,我宁愿不将该文件夹添加到 PATH,但我确实希望能够diff a.txt b.txt
在任何地方键入并对两者运行 diff。
我尝试过的事情:
- 添加了
diff.exe
子项[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- 创建一个
diff.lnk
(C:\dev
位于我的 PATH 上)并添加.LNK
到我的 PATHEXT diff.bat
使用以下代码创建:@"C:\Program Files (x86)\git\bin\diff.exe" *$
唯一有效的方法是最后一种方法,但它(虽然可以运行diff
)无法找到我通过命令行指定的任何文件。
类似地,如果我当前在但不在其他地方,第二种方法允许diff
运行。C:\dev
我有一个doskey
脚本可以作为别名机器(特别是:npp=notepad++
在 cmd 启动时),但我宁愿不使用它。如果必须的话我会的。
有什么建议吗?知道为什么上述方法不起作用吗?
答案1
知道为什么上述方法不起作用吗?
一些。
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
对 没有影响cmd
,因为cmd
不用于ShellExecuteEx
运行程序。- 创建
.lnk
文件应该就可以了。 从你的描述来看,最有可能的是
事实上并非如此。C:\dev
在我的PATH
。 diff.bat
没有按预期工作,因为您用于替换所有位置参数的语法是乱码。*$
这甚至不是偶然的。如前所述,%*
在由以下脚本解释的脚本中执行此操作的正确语法是cmd
。 (这也是 Take Command 的正确语法,它%#
作为奖励提供支持。)