我已经将notepad++.exe
添加到环境变量的路径中。
现在在命令提示符中,notepad++.exe filename.txt
会打开filename.txt
。但我想只用np filename.txt
来打开文件。
我尝试使用DOSKEY np=notepad++
。但它只是将已经打开的Notepad++带到前台而不打开文件。如何让它打开文件?
我已经将notepad++.exe
添加到环境变量的路径中。
现在在命令提示符中,notepad++.exe filename.txt
会打开filename.txt
。但我想只用np filename.txt
来打开文件。
我尝试使用DOSKEY np=notepad++
。但它只是将已经打开的Notepad++带到前台而不打开文件。如何让它打开文件?
创建一个批处理文件以及您的 DOSKEY
命令。
运行注册表编辑器并转到 HKEY_CURRENT_USER\Software\Microsoft\Command Processor
添加字符串值条目,名称为 AutoRun
,路径为您的 .bat/.cmd 文件的完整路径。
例如,%USERPROFILE%\alias.cmd
,将路径的初始部分替换为%USERPROFILE%
对于在多台机器之间同步非常有用。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
。@echo off
:: Temporary system path at cmd startup
set PATH=%PATH%;"C:\Program Files\Sublime Text 2\"
:: Add to path by command
DOSKEY add_python26=set PATH=%PATH%;"C:\Python26\"
DOSKEY add_python33=set PATH=%PATH%;"C:\Python33\"
:: Commands
DOSKEY ls=dir /B $*
DOSKEY sublime=sublime_text $*
::sublime_text.exe is name of the executable. By adding a temporary entry to system path, we don't have to write the whole directory anymore.
DOSKEY gsp="C:\Program Files (x86)\Sketchpad5\GSP505en.exe"
DOSKEY alias=notepad %USERPROFILE%\Dropbox\alias.cmd
:: Common directories
DOSKEY dropbox=cd "%USERPROFILE%\Dropbox\$*"
DOSKEY research=cd %USERPROFILE%\Dropbox\Research\
$*
语法可用于目录字符串以及接受参数的可执行文件。因此,在上面的示例中,用户定义的命令dropbox research
指向与research
相同的目录。alias.cmd
文件的命令是个不错的主意。请参见上面的alias
。如果在cmd会话中,请输入cmd
以重新启动cmd并重新加载alias.cmd
文件。.reg
文件,可以帮助您安装alias.cmd
。现在它被设置为如上建议的一个dropbox文件夹示例。Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\alias.cmd"
对于单用户应用程序,上述内容就足够了。然而,在某些情况下需要首先检查注册表键中是否存在alias.cmd
。请参见以下示例。
在一个 C:\Users\Public\init.cmd
文件中,可能托管跨用户配置:
@ECHO OFF
REM Add other configurations as needed
IF EXIST "%USERPROFILE%\alias.cmd" ( CALL "%USERPROFILE%\alias.cmd" )
应相应地更新注册表键以匹配 C:\Users\Public\init.cmd
,或者使用 .reg
文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="C:\\Users\\Public\\init.cmd"
set AUTORUN=1
)并使用宏文件选项设置doskey,而不是运行doskey.exe来定义每个别名。 - Eryk SunHKEY_CURRENT_USER\Software\Microsoft\Command Processor
?我在注册表编辑器中似乎找不到这个路径了。 - Jandoskey /macrofile="%USERPROFILE%\alias"
。接下来,在'alias'文件中放置别名,不包括'doskey'部分。这是管理员可以使用的解决方案,以将autorun定义限制为用户可以自行创建的别名。从而防止用户自动运行其他内容。 - user1708042你需要传递参数,请尝试以下方式:
doskey np=notepad++.exe $*
编辑(回应Romonov的评论)问:「有没有办法让命令提示符记住这个命令,这样我就不必每次打开新的命令提示符时都要运行它?」
doskey
是一个文本命令,由命令处理器(例如cmd.exe)解释执行,它无法知道如何修改其他进程中的状态(尤其是那些尚未启动的进程)。
使用doskey
来设置初始命令 shell 环境的人通常使用 /K
选项(通常通过快捷方式)运行一个批处理文件,该文件完成所有常见设置(如设置窗口标题、颜色等)。
cmd.exe /K env.cmd
env.cmd:
title "Foo Bar"
doskey np=notepad++.exe $*
...
doskey npp="C:\Program Files (x86)\Notepad++\notepad++.exe" $*
。 - Matt Biernerphpstorm .
(请注意,点表示“当前目录”的快捷方式)吗? - user unknown如果你只需要一些简单的命令,可以按照以下步骤操作:
可能有些繁琐,但与@Argyll的(否则非常好的)答案不同,这解决了每次加载的问题。
例如,我有一个名为dig2.bat的文件,其中包含以下内容:
@echo off
echo.
dig +noall +answer %1
您的np
文件只需要包含以下内容:
@echo off
echo.
notepad++.exe %1
只需将C:\Aliases文件夹添加到您的PATH环境变量中。如果您已经打开了CMD或PowerShell,则需要重新启动。
顺便说一下,我在C:\ Aliases目录中有大约20个别名(单独的.bat文件),我只是根据需要创建新的别名。也许不是最整洁的,但它工作得很好。
更新:根据用户@Mav的绝妙建议,最好使用%*而不是%1,这样您就可以将多个文件传递给命令,例如:
@echo off
echo.
notepad++.exe %*
这样,你就可以这样做:
np c:\temp\abc.txt c:\temp\def.txt c:\temp\ghi.txt
它将会打开这3个文件。
.bat
文件中充分限定“ls”命令吗? - roryhewittls.exe
的完整路径肯定可以工作。好主意。不过我已经使用了 doskey 替代方案。 - Qwerty或者你可以使用 cmder
,这个工具可以像Linux一样添加别名:
alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
.
作为参数,以告诉它打开当前目录。请参阅Jetbrains的此帮助条目获取更多信息,以及此处获取phpstorm的其他命令行选项。 - geisterfurz007假设你将notepad++.exe添加到了你的PATH环境变量中,那么这就非常简单了。
在你的System32文件夹中创建一个名为np.bat
的文件,并将以下代码复制进去:
@echo off
call notepad++.exe %*
%*
将您给np
命令的所有参数传递给notepad++.exe
命令。
编辑: 您需要管理员权限才能将文件保存到System32文件夹中,这对我来说有点棘手。我只是在其他地方创建了文件,然后手动将其移动到System32中。
此外,您可以在路径中创建一个别名.cmd文件(例如C:\ Windows),其中包含以下命令:
@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd
完成这个步骤后,你可以像这样做:
alias nameOfYourAlias commands to run
之后,您可以在命令行中输入
nameOfYourAlias
这将会执行
commands to run
但是对我来说最好的方法就是添加程序的路径。
setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M
现在我将 Sublime 当作
subl index.html
setx
命令来设置 PATH
环境变量,否则可能会永久截断你的路径。 - Amit Naidu自然而然,我会不停地努力寻找 最方便的解决方案。结合广阔互联网上的许多答案和主题,以下是您可以拥有的方案。
cmd
时自动加载DOSKEY
用于别名ls=ls --color=auto $*
请注意,这主要是基于Argyll的回答和评论,一定要阅读它以了解概念。
mac
宏文件bat
/cmd
文件来运行其他东西(类似于Linux中的.bashrc
)cmd
上运行%userprofile%/cmd/aliases.mac
;==============================================================================
;= This file is registered via registry to auto load with each instance of cmd.
;================================ general info ================================
;= https://dev59.com/-2Ij5IYBdhLWcg3wMiYu#59978163 - how to set it up?
;= https://gist.github.com/postcog/5c8c13f7f66330b493b8 - example doskey macrofile
;========================= loading with cmd shortcut ==========================
;= create a shortcut with the following target :
;= %comspec% /k "(doskey /macrofile=%userprofile%\cmd\aliases.mac)"
alias=echo Opening aliases in Sublime... && subl %USERPROFILE%\cmd\aliases.mac
ga=grep --color "$1" %USERPROFILE%\cmd\aliases.mac
hosts=runas /noprofile /savecred /user:QWERTY-XPS9370\administrator "subl C:\Windows\System32\drivers\etc\hosts" > NUL
p=@echo "~~ powercfg -devicequery wake_armed ~~" && powercfg -devicequery wake_armed && @echo "~~ powercfg -requests ~~ " && powercfg -requests && @echo "~~ powercfg -waketimers ~~"p && powercfg -waketimers
ls=ls --color=auto $*
ll=ls -l --color=auto $*
la=ls -la --color=auto $*
grep=grep --color $*
~=cd %USERPROFILE%
cdr=cd C:\repos
cde=cd C:\repos\esquire
cdd=cd C:\repos\dixons
cds=cd C:\repos\stekkie
cdu=cd C:\repos\uplus
cduo=cd C:\repos\uplus\oxbridge-fe
cdus=cd C:\repos\uplus\stratus
npx=npx --no-install $*
npxi=npx $*
npr=npm run $*
now=vercel $*
;=only in bash
;=alias whereget='_whereget() { A=$1; B=$2; shift 2; eval \"$(where $B | head -$A | tail -1)\" $@; }; _whereget'
history=doskey /history
h=IF ".$*." == ".." (echo "usage: h [ SAVE | TAIL [-|+<n>] | OPEN ]" && echo. && doskey/history) ELSE (IF /I "$1" == "OPEN" (%USERPROFILE%\cmd\history.log) ELSE (IF /I "$1" == "SAVE" (echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history >> %USERPROFILE%\cmd\history.log & ECHO Command history saved) ELSE (IF /I "$1" == "TAIL" (tail $2 %USERPROFILE%\cmd\history.log) ELSE (doskey/history))))
;=exit=echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history >> %USERPROFILE%\cmd\history.log & ECHO Command history saved, exiting & timeout 1 & exit $*
exit=echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history >> %USERPROFILE%\cmd\history.log & exit $*
;============================= :end ============================
;= rem ******************************************************************
;= rem * EOF - Don't remove the following line. It clears out the ';'
;= rem * macro. We're using it because there is no support for comments
;= rem * in a DOSKEY macro file.
;= rem ******************************************************************
;=
a) 手动加载快捷方式
创建一个指向
cmd.exe
的快捷方式,目标如下:
%comspec% /k "(doskey /macrofile=%userprofile%\cmd\aliases.mac)"
b) 仅注册 aliases.mac
宏文件
c) 注册一个常规的 cmd/bat
文件以运行任意命令 (类似于linux的.bashrc
)
请参见底部的示例cmdrc.cmd
文件
注意:下面的 Autorun_
只是一个占位符键,不会有任何作用。选择一个并重命名另一个。
手动编辑以下路径中的注册表:
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
Autorun REG_SZ doskey /macrofile=%userprofile%\cmd\aliases.mac
Autorun_ REG_SZ %USERPROFILE%\cmd\cmdrc.cmd
或导入注册表文件:
%userprofile%/cmd/cmd-aliases.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="doskey /macrofile=%userprofile%\\cmd\\aliases.mac"
"Autorun_"="%USERPROFILE%\\cmd\\cmdrc.cmd"
%userprofile%/cmd/cmdrc.cmd
如果您选择了上述b)选项,则无需此文件:: This file is registered via registry to auto load with each instance of cmd.
:: https://dev59.com/-2Ij5IYBdhLWcg3wMiYu#59978163
@echo off
doskey /macrofile=%userprofile%\cmd\aliases.mac
:: put other commands here
cls
echo Hi Qwerty, how are you today?
doskey /macrofile
。 - Qwerty/exename=powershell.exe
可以使其工作,例如 doskey /exename=powershell.exe /macrofile=%userprofile%\cmd\aliases.mac
。但我没有测试过。然后你可以使用桌面快捷方式。如果我们找到正确的注册表键,我敢打赌也有一种方法将其添加到注册表中。https://devblogs.microsoft.com/premier-developer/getting-doskey-macros-to-work-in-powershell/ - Qwerty您希望通过简单地输入来创建别名:
c:\>alias kgs kubectl get svc
Created alias for kgs=kubectl get svc
然后使用别名如下:
c:\>kgs alfresco-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alfresco-svc ClusterIP 10.7.249.219 <none> 80/TCP 8d
只需将以下alias.bat
文件添加到您的路径中。它会在与自身相同的目录中创建其他批处理文件。
@echo off
echo.
for /f "tokens=1,* delims= " %%a in ("%*") do set ALL_BUT_FIRST=%%b
echo @echo off > C:\Development\alias-script\%1.bat
echo echo. >> C:\Development\alias-script\%1.bat
echo %ALL_BUT_FIRST% %%* >> C:\Development\alias-script\%1.bat
echo Created alias for %1=%ALL_BUT_FIRST%
这创建的批处理文件的一个示例名为kgs.bat
:
@echo off
echo.
kubectl get svc %*
C:\BIN
和C:\BATCH
。然后修改你的路径语句,将它们按照顺序放在开头:C:\BATCH;C:\BIN;[剩余路径]
。C:\BIN
文件夹中,它们就在你的路径中了。如果想要暂时覆盖这些分配,可以在C:\BATCH
文件夹中添加与可执行文件同名的批处理文件,路径会在C:\BIN文件夹中的文件之前找到它。这应该涵盖你可能需要做的任何事情。C:\BIN
或C:\Batch
文件夹中将简单地预先占据原来的位置——允许你临时或永久地覆盖这些内容,或将它们重命名为你更熟悉的名称——而不会实际修改原始文件。