Rom*_*nov 320 windows alias command-prompt
我notepad++.exe在环境变量中添加了我的Path.
现在在命令提示符下,notepad++.exe filename.txt打开filename.txt.但我想np filename.txt打开文件.
我试过用DOSKEY np=notepad++.但它只是在没有打开文件的情况下将已经打开的记事本++带到最前面.如何让它打开文件?
谢谢.
Arg*_*yll 380
添加到乔希的答案,
您可以通过以下步骤使别名持久化,
DOSKEY命令创建.bat或.cmd文件.HKEY_CURRENT_USER\Software\Microsoft\Command Processor使用.bat/.cmd文件的名称AutoRun和完整路径添加字符串值条目.
例如,%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\
Run Code Online (Sandbox Code Playgroud)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor语法在目录字符串之后以及接收参数的可执行文件中起作用.因此在上面的示例中,用户定义的命令$*指向与之相同的目录dropbox research.research文件的命令是个好主意.见alias.cmd上文.如果您在cmd会话中,请输入alias以重新启动cmd并重新加载该cmd文件.当我在互联网上搜索问题的答案时,不知怎的讨论只关注持久性或仅关注DOSKEY的一些用法.我希望有人能从这两个方面一起受益!
这是一个alias.cmd帮助您安装的文件.reg.现在将其设置为如上所述的Dropbox文件夹的示例.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\alias.cmd"
Run Code Online (Sandbox Code Playgroud)
jos*_*ley 233
你需要传递参数,试试这个:
doskey np=notepad++.exe $*
Run Code Online (Sandbox Code Playgroud)
编辑(回应Romonov的评论)问:有没有办法让命令提示符记住,所以每次打开新的命令提示符时都不必运行它?
doskey 是一个由命令处理器(例如cmd.exe)解释的文本命令,它无法知道在某些其他进程中修改状态(尤其是尚未启动的进程).
使用的人doskey设置的初始命令外壳环境下通常使用的/K选项(通常是通过一个快捷键)来运行一个批处理文件,它完成了所有的常用的设置(喜欢-集窗口的标题,颜色等).
cmd.exe /K env.cmd
Run Code Online (Sandbox Code Playgroud)
env.cmd:
title "Foo Bar"
doskey np=notepad++.exe $*
...
Run Code Online (Sandbox Code Playgroud)
ror*_*itt 99
如果你只是想要一些简单的命令,你可以按照以下步骤操作:
也许是矫枉过正,但与@Argyll的(其他优秀)答案不同,这解决了每次加载的问题.
例如,我有一个名为dig2.bat的文件,其中包含以下内容:
@echo off
echo.
dig +noall +answer %1
Run Code Online (Sandbox Code Playgroud)
你的np文件只有以下内容:
@echo off
echo.
notepad++.exe %1
Run Code Online (Sandbox Code Playgroud)
FWIW,我在C:\ Aliases目录中有大约20个别名(单独的.bat文件) - 我只是根据需要创建新的别名.也许不是最好的,但它工作正常.
更新:根据用户@Mav的优秀建议,使用%*而不是%1更好,因此您可以将多个文件传递给命令,例如:
@echo off
echo.
notepad++.exe %*
Run Code Online (Sandbox Code Playgroud)
这样,你可以这样做:
np c:\temp\abc.txt c:\temp\def.txt c:\temp\ghi.txt
Run Code Online (Sandbox Code Playgroud)
它将打开所有3个文件.
Nis*_*hth 32
或者您也可以使用cmder它来添加像linux一样的别名:
alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
Run Code Online (Sandbox Code Playgroud)
Vel*_*ixo 29
鉴于您在PATH变量中添加了notepad ++.exe,它更加简单.np.bat使用以下代码在System32文件夹中创建一个文件:
@echo off
call notepad++.exe %*
Run Code Online (Sandbox Code Playgroud)
该%*通行证沿所有参数你给的np命令的notepad++.exe命令.
编辑: 您将需要管理员权限将文件保存到System32文件夹,这对我来说有点不对劲.我刚刚在其他地方创建了文件并手动将其移动到System32.
Ник*_*хно 14
此外,您可以使用该命令在路径中创建alias.cmd(例如C:\ Windows)
@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd
Run Code Online (Sandbox Code Playgroud)
一旦你这样做,你可以做这样的事情:
alias nameOfYourAlias commands to run
Run Code Online (Sandbox Code Playgroud)
然后你可以输入comman line
nameOfYourAlias
Run Code Online (Sandbox Code Playgroud)
这将执行
commands to run
Run Code Online (Sandbox Code Playgroud)
但对我来说最好的方法就是添加程序的路径.
setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M
Run Code Online (Sandbox Code Playgroud)
现在我以崇高的方式运行
subl index.html
Run Code Online (Sandbox Code Playgroud)
Qwe*_*rty 13
当然,在找到最方便的解决方案之前我不会休息。结合广阔的互联网上的众多答案和主题,您可以获得以下内容。
\ncmdDOSKEY别名不需要关键字ls=ls --color=auto $*请注意,这很大程度上基于阿盖尔的回答和评论,一定要阅读它以理解概念。
\n\nmac使用别名创建一个宏文件bat/cmd文件来运行其他东西(类似于.bashrc在 Linux 中)cmd%userprofile%/cmd/aliases.mac;==============================================================================\n;= This file is registered via registry to auto load with each instance of cmd.\n;================================ general info ================================\n;= /sf/answers/4198471441/ - how to set it up?\n;= https://gist.github.com/postcog/5c8c13f7f66330b493b8 - example doskey macrofile\n;========================= loading with cmd shortcut ==========================\n;= create a shortcut with the following target :\n;= %comspec% /k "(doskey /macrofile=%userprofile%\\cmd\\aliases.mac)"\n\nalias=echo Opening aliases in Sublime... && subl %USERPROFILE%\\cmd\\aliases.mac\nga=grep --color "$1" %USERPROFILE%\\cmd\\aliases.mac\n\nhosts=runas /noprofile /savecred /user:QWERTY-XPS9370\\administrator "subl C:\\Windows\\System32\\drivers\\etc\\hosts" > NUL\n\np=@echo "~~ powercfg -devicequery wake_armed ~~" && powercfg -devicequery wake_armed && @echo "~~ powercfg -requests ~~ " && powercfg -requests && @echo "~~ powercfg -waketimers ~~"p && powercfg -waketimers\n\nls=ls --color=auto $*\nll=ls -l --color=auto $*\nla=ls -la --color=auto $*\ngrep=grep --color $*\n\n~=cd %USERPROFILE%\ncdr=cd C:\\repos\ncde=cd C:\\repos\\esquire\ncdd=cd C:\\repos\\dixons\ncds=cd C:\\repos\\stekkie\ncdu=cd C:\\repos\\uplus\ncduo=cd C:\\repos\\uplus\\oxbridge-fe\ncdus=cd C:\\repos\\uplus\\stratus\n\nnpx=npx --no-install $*\nnpxi=npx $*\nnpr=npm run $*\n\nnow=vercel $*\n\n\n;=only in bash\n;=alias whereget=\'_whereget() { A=$1; B=$2; shift 2; eval \\"$(where $B | head -$A | tail -1)\\" $@; }; _whereget\'\n\nhistory=doskey /history\nh=IF ".$*." == ".." (echo "usage: h [ SAVE | TAIL [-|+<n>] | OPEN ]" && echo. &&\xc2\xa0doskey/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))))\n\n;=exit=echo **** %date% %time% **** >> %USERPROFILE%\\cmd\\history.log & doskey/history >> %USERPROFILE%\\cmd\\history.log & ECHO Command history saved, exiting & timeout 1 & exit $*\nexit=echo **** %date% %time% **** >> %USERPROFILE%\\cmd\\history.log & doskey/history >> %USERPROFILE%\\cmd\\history.log & exit $*\n\n;============================= :end ============================\n;= rem ******************************************************************\n;= rem * EOF - Don\'t remove the following line. It clears out the \';\'\n;= rem * macro. We\'re using it because there is no support for comments\n;= rem * in a DOSKEY macro file.\n;= rem ******************************************************************\n;=\nRun Code Online (Sandbox Code Playgroud)\n现在您有三个选择:
\na) 使用快捷方式手动加载
\n\n\n\n
cmd.exe创建具有以下目标的快捷方式:
\n%comspec% /k "(doskey /macrofile=%userprofile%\\cmd\\aliases.mac)"
b) 仅注册aliases.mac宏文件
c) 注册一个常规cmd/bat文件来运行任意命令(类似于 linux 的.bashrc)
\n请参阅底部的示例文件cmdrc.cmd
注意:下面Autorun_只是一个占位符键,不会执行任何操作。选择一个并重命名另一个。
在此路径手动编辑注册表:
\n[HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor] Autorun REG_SZ doskey /macrofile=%userprofile%\\cmd\\aliases.mac\n Autorun_ REG_SZ %USERPROFILE%\\cmd\\cmdrc.cmd\nRun Code Online (Sandbox Code Playgroud)\n或者导入reg文件:
\n%userprofile%/cmd/cmd-aliases.regWindows Registry Editor Version 5.00\n[HKEY_CURRENT_USER\\Software\\Microsoft\\Command Processor]\n"Autorun"="doskey /macrofile=%userprofile%\\\\cmd\\\\aliases.mac"\n"Autorun_"="%USERPROFILE%\\\\cmd\\\\cmdrc.cmd"\nRun Code Online (Sandbox Code Playgroud)\n%userprofile%/cmd/cmdrc.cmd 如果您决定使用上面的 b),则不需要此文件:: This file is registered via registry to auto load with each instance of cmd.\n:: /sf/answers/4198471441/\n\n@echo off\ndoskey /macrofile=%userprofile%\\cmd\\aliases.mac\n\n:: put other commands here\n\ncls\necho Hi Qwerty, how are you today?\nRun Code Online (Sandbox Code Playgroud)\n\n
要定义控制台别名,请使用Doskey.exe创建宏或使用该AddConsoleAlias功能.
doskey test=cd \a_very_long_path\test
Run Code Online (Sandbox Code Playgroud)
要在最后传递参数 add $*:doskey short=longname $*
AddConsoleAlias( TEXT("test"),
TEXT("cd \\<a_very_long_path>\\test"),
TEXT("cmd.exe"));
Run Code Online (Sandbox Code Playgroud)
实际上,我会让您更好,让您了解自从我以前在Amiga上编程以来一直使用的一些技巧。在您使用的任何新系统上,无论是个人系统还是专业系统,第一步都是创建两个文件夹: C:\BIN和C:\BATCH。然后修改您的path语句,以将两者放在顺序的开头C:\BATCH;C:\BIN;[rest of path]。
完成此操作后,如果您只有很少的偏僻实用程序,则只需将它们复制到C:\BIN文件夹中就可以访问它们,并且它们就在您的路径中。要临时覆盖这些分配,可以将与可执行文件同名的批处理文件添加到该C:\BATCH文件夹,并且路径会在C:\ BIN中的文件之前找到该文件。它应该涵盖您可能需要做的所有事情。
当然,这些天来,规范的正确方法是在文件上创建符号连接,但原理相同。还有一点额外的奖金。如果你想要把东西在系统中把它在与路径的东西已经发生冲突,C:\BIN或C:\Batch文件夹就干脆抢先原-让你忽略的东西暂时或永久或重命名的东西的名字你更舒适-无需实际更改原始照片。
小智 6
您只需要输入以下内容即可创建别名:
c:\>alias kgs kubectl get svc
Created alias for kgs=kubectl get svc
Run Code Online (Sandbox Code Playgroud)
并使用别名,如下所示:
c:\>kgs alfresco-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alfresco-svc ClusterIP 10.7.249.219 <none> 80/TCP 8d
Run Code Online (Sandbox Code Playgroud)
只需将以下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%
Run Code Online (Sandbox Code Playgroud)
此创建的名为批处理文件的示例kgs.bat为:
@echo off
echo.
kubectl get svc %*
Run Code Online (Sandbox Code Playgroud)
扩展roryhewitt 的答案。
使用 .cmd 文件而不是 DOSKEY 的一个优势是,这些“别名”可以在其他 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
Run Code Online (Sandbox Code Playgroud)
使用我的“正常”项目启动 VS(在这种情况下是 VS2012 - 但根据口味进行调整),但没有给出文件,但是当给定文件时,文件将尝试附加到正在运行的 VS,在“该项目中”打开该文件,而不是启动一个VS 的新实例。
为了从 bash 使用它,我添加了一个额外的间接级别,因为“vs Myfile”并不总是有效
alias vs='/usr/bin/run_visual_studio.sh'
Run Code Online (Sandbox Code Playgroud)
在调用 vs.cmd 之前调整路径
#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r $1`"
Run Code Online (Sandbox Code Playgroud)
所以这样我就可以做
vs SomeFile.txt
Run Code Online (Sandbox Code Playgroud)
在命令提示符、Power Shell 或 bash 中,它会在我正在运行的 Visual Studio 中打开以进行编辑(当我刚刚在 VS 中编辑数小时时,这只是使我可怜的大脑不必处理 VI 命令或其他类似命令)。