我在环境变量的路径中添加了notepad++.exe
。
现在在命令提示符下,notepad++.exe filename.txt
打开filename.txt
。但我只想np filename.txt
打开文件。
我尝试使用DOSKEY np=notepad++
。但它只是在没有打开文件的情况下将已经打开的记事本++带到最前面。如何让它打开文件?
感谢。
答案 0 :(得分:348)
要添加到josh的答案,
您可以使用以下步骤
制作别名持久性DOSKEY
命令创建.bat或.cmd文件。HKEY_CURRENT_USER\Software\Microsoft\Command Processor
添加名称为AutoRun
的字符串值条目以及.bat / .cmd文件的完整路径。
例如,%USERPROFILE%\alias.cmd
,用%USERPROFILE%
替换路径的初始段对于在多台计算机之间进行同步非常有用。
这样,每次运行cmd时,都会加载别名。
为了完整性,这里有一个模板来说明一个人可能会觉得有用的别名。
@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
文件。当我在互联网上搜索问题的答案时,不知怎的讨论只关注持久性或仅关注DOSKEY的一些用法。我希望有人会从这两个方面受益于这里!
这是一个.reg
文件,可帮助您安装alias.cmd
。现在将其设置为如上所述的Dropbox文件夹的示例。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\alias.cmd"
答案 1 :(得分:221)
你需要传递参数,试试这个:
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 $*
...
答案 2 :(得分:79)
如果你只是想要一些简单的命令,你可以按照以下步骤操作:
也许是矫枉过正,但与@Argyll的(其他优秀)答案不同,这解决了每次加载的问题。
例如,我有一个名为 dig2.bat 的文件,其中包含以下内容:
@echo off
echo.
dig +noall +answer %1
您的 np 文件只有以下内容:
@echo off
echo.
notepad++.exe %1
FWIW,我在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个文件。
答案 3 :(得分:29)
鉴于您在PATH变量中添加了notepad ++。exe,它非常简单。
使用以下代码在名为np.bat
的System32文件夹中创建一个文件:
@echo off
call notepad++.exe %*
%*
将您提供np
命令的所有参数传递给notepad++.exe
命令。
修改强> 您需要管理员权限才能将文件保存到System32文件夹,这对我来说有点不可思议。我刚刚在其他地方创建了文件并手动将其移动到System32。
答案 4 :(得分:27)
或者你可以使用cmder
,它可以像linux一样添加别名:
alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
答案 5 :(得分:14)
此外,您可以使用命令
在路径中创建alias.cmd(例如C:\ Windows)@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd
一旦你这样做,你可以这样做:
alias nameOfYourAlias commands to run
然后你可以输入comman line
nameOfYourAlias
这将执行
commands to run
但对我来说最好的方法就是添加程序的路径。
setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M
现在我以
的身份运行崇高subl index.html
答案 6 :(得分:9)
要定义控制台别名,请使用Doskey.exe
创建宏,或使用AddConsoleAlias
功能。
doskey test=cd \a_very_long_path\test
要在最后添加parameters添加$*
:doskey short=longname $*
AddConsoleAlias( TEXT("test"),
TEXT("cd \\<a_very_long_path>\\test"),
TEXT("cmd.exe"));
此处提供了更多信息Console Aliases,Doskey,Parameters
答案 7 :(得分:6)
您只想输入以下内容即可创建别名:
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 %*
答案 8 :(得分:4)
实际上,我会更好地告诉你一件事,让我介绍一下我曾经使用的一种技术,因为我曾经在Amiga上编程。在您使用的任何新系统上,无论是个人还是专业,第一步是创建两个文件夹:C:\ BIN和C:\ BATCH。然后修改你的路径语句,将它们放在C:\ BATCH; C:\ BIN; [路径的其余部分]的开头。
完成此操作后,如果您需要访问权限的实用程序很少,只需将它们复制到C:\ BIN文件夹即可,它们就在您的路径中。要临时覆盖这些分配,可以将与可执行文件同名的批处理文件添加到C:\ BATCH文件夹,路径将在C:\ BIN中的文件之前找到它。它应该涵盖您可能需要做的任何事情。
当然,现在这样做的规范正确方法是创建文件的符号连接,但同样的原则适用。还有一些额外的额外奖励。如果你想在系统中放置一些与路径中已经存在的东西冲突的东西,将它放在C:\ BIN或C:\ Batch文件夹中,只需预先原始文件 - 允许你暂时或永久覆盖内容,或者将内容重命名为您更熟悉的名称 - 而不会实际更改原始内容。
答案 9 :(得分:3)
扩展roryhewitt回答。
在DOSKEY上使用.cmd文件的一个优点是,这些“别名”随后可用于其他shell,例如PowerShell或WSL(适用于Linux的Windows子系统)。
在bash中使用这些命令的唯一问题是它可能需要更多设置,因为在调用“别名”之前可能需要进行一些路径操作。
例如,我有vs.cmd,这是我在Visual Studio中编辑文件的“别名”
@echo off
if [%1]==[] goto nofiles
start "" "c:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" /edit %1
goto end
:nofiles
start "" "C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" "[PATH TO MY NORMAL SLN]"
:end
使用我的“普通”项目激活VS(在这种情况下VS2012 - 但调整到品味)没有给出文件但是当给定文件时将尝试附加到正在运行的VS打开该文件“在该项目内”而不是而不是开始一个新的VS实例。
为了从bash中使用它,我再添加一个额外的间接级别,因为“vs Myfile”并不总是有效
alias vs='/usr/bin/run_visual_studio.sh'
在调用vs.cmd之前调整路径
#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r $1`"
所以我可以这样做
vs SomeFile.txt
在命令提示符,Power Shell或bash中,它会在我正在运行的Visual Studio中打开进行编辑(这只会让我的大脑无法处理VI命令,或者当我刚刚在VS中进行编辑时小时)。
答案 10 :(得分:2)
自然,直到我有了最方便的解决方案后,我才会休息。结合庞大互联网上的许多答案和主题,这就是您所能拥有的。
cmd
的每个实例DOSKEY
作为别名ls=ls --color=auto $*
请注意,这主要基于Argyll's answer和注释,请务必阅读以了解概念。
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://stackoverflow.com/a/59978163/985454 - 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=subl %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 [SHOW | SAVE | TSAVE ]
h=IF ".$*." == ".." (echo "usage: h [ SHOW | SAVE | TSAVE ]" && doskey/history) ELSE (IF /I "$1" == "SAVE" (doskey/history $g$g %USERPROFILE%\cmd\history.log & ECHO Command history saved) ELSE (IF /I "$1" == "TSAVE" (echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history $g$g %USERPROFILE%\cmd\history.log & ECHO Command history saved) ELSE (IF /I "$1" == "SHOW" (type %USERPROFILE%\cmd\history.log) ELSE (doskey/history))))
loghistory=doskey /history >> %USERPROFILE%\cmd\history.log
;=exit=echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history $g$g %USERPROFILE%\cmd\history.log & ECHO Command history saved, exiting & timeout 1 & exit $*
exit=echo **** %date% %time% **** >> %USERPROFILE%\cmd\history.log & doskey/history $g$g %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
文件以运行任意命令
请参阅底部的示例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
或导入reg文件:
%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://stackoverflow.com/a/59978163/985454
@echo off
doskey /macrofile=%userprofile%\cmd\aliases.mac
:: put other commands here
答案 11 :(得分:1)
这个解决方案不是一个合适的解决方案,但在某些情况下可以达到目的。
首先创建一个文件夹并将其添加到系统路径中。转到要为其创建别名的任何程序的可执行文件。右键单击并发送到桌面(创建快捷方式)。将快捷方式重命名为任何别名都很舒服。现在,取出快捷方式并放在您的文件夹中。
在运行提示中,您可以直接输入快捷方式名称,然后可以为您打开程序。但是从命令提示符处,您需要附加 .lnk 并按Enter键,程序将被打开。
答案 12 :(得分:0)
非常简单的自定义别名:
在系统的任何位置创建一个新文件夹。使用 .cmd
扩展名创建一个名为任意名称的新文件。在文件中写入所有命令,如
cd /D D:\Folder
g++ -o run whatever.cpp
复制文件夹的路径。
转到Settings > System > About > Advanced system settings > Enviornment Variables...
现在找到 Path
部分下的 System variables
变量。单击一次,然后单击 Edit
。现在点击 New
并粘贴复制的文本。
点击 OK
、OK
和 OK
。重新启动你的 Powershell/cmd 提示符,瞧,你得到了你的持久别名!您也可以使用同一文件夹创建其他别名,而无需再次更改 Path
变量!
答案 13 :(得分:0)
如果您要在每个目录/每个项目的基础上启用别名,请尝试以下操作:
首先,创建一个批处理文件,该文件将在当前目录中查找名为aliases
的文件,并从中初始化别名,我们将其称为make-aliases.cmd
@echo off
if not exist aliases goto:eof
echo [Loading aliases...]
for /f "tokens=1* delims=^=" %%i in (aliases) do (
echo %%i ^<^=^> %%j
doskey %%i=%%j
)
doskey aliases=doskey /macros
echo --------------------
echo aliases ^=^> list all
echo alt+F10 ^=^> clear all
echo [Done]
然后,使用以下格式在需要的地方创建aliases
:
alias1 = command1
alias2 = command2
...
例如:
b = nmake
c = nmake clean
r = nmake rebuild
然后,将make-aliases.cmd
的位置添加到%PATH%
变量中,以使其在系统范围内或仅将其保存在已知位置。
使其自动从cmd
开始。
我绝对建议不要使用HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
,因为某些开发工具会在每个会话中多次触发自动运行脚本。
如果您使用 ConEmu ,则可以采用另一种方法,并从启动任务(Settings
> Startup
> Tasks
)启动脚本,例如,我创建了一个名为{MSVC}
的条目:
cmd.exe /k "vcvars64 && make-aliases"
,
,然后使用Settings
Integration>
通过Command:
> {MSVC} -cur_console:n
在Explorer上下文菜单中注册它,因此现在我可以右键单击文件夹并启动VS开发人员提示时,我的aliases
会自动加载到该文件夹中。
没有ConEmu,您可能只想使用相应的命令创建cmd.exe
的快捷方式,或者只是每次手动运行make-aliases
。
如果您碰巧忘记了别名,请使用aliases
宏,如果出现任何问题,只需按 Alt + F10 重设当前会话,这是cmd
中的内置命令。
答案 14 :(得分:0)
首先,您可以创建一个名为np.cmd的文件,并将其放在PATH搜索列表中的文件夹中。 然后,编辑np.cmd文件,如下所示:
@echo off
notepad++.exe
答案 15 :(得分:0)
由于您的路径中已有notepad++.exe
。在名为np
的文件夹中创建快捷方式,并将其指向notepad++.exe
。
答案 16 :(得分:-4)
使用doskey是执行此操作的正确方法,但在命令提示符窗口关闭时会重置。您需要将该行添加到类似.bashrc的内容中。所以我做了以下事情:
工作得很好!