Sta*_*kER 102 windows command-line
我曾经在 bash 上工作并从别名中受益匪浅。Windows 命令行中是否有任何等效的方法?
我不想模拟Linux环境,所以cygwin不是一个选择。我只需要一些非常长的命令的快捷方式,例如cd a_very_long_path.
dbe*_*ham 98
正如 Christian.K 在他的评论中所说,DOSKEY 命令可用于定义类似于别名的宏。
doskey macroName=macroDefinition
Run Code Online (Sandbox Code Playgroud)
宏参数在定义中通过$前缀位置引用:$1通过$9和$*为所有。
请参阅doskey technet 文档,或从命令行键入doskey /?或help doskey以获取更多信息。
但是 DOSKEY 宏存在严重的限制:
someMacro|findstr '^'和dir|someMacro失败。for /f %A in ('someMacro') do ...失败这些限制非常严重,以至于我很少使用 DOSKEY 宏。
显然,您可以创建批处理脚本而不是宏,并确保脚本位置在您的 PATH 中。但是,如果您想在另一个脚本中使用该脚本,则必须为每个脚本添加 CALL 前缀。
您可以为长时间和经常使用的命令创建简单的变量“宏”,但是键入语法有点笨拙,因为您需要在要使用“宏”时对其进行扩展。
定义:
set "cdMe=cd a_very_long_path"
Run Code Online (Sandbox Code Playgroud)
用法(来自命令行或脚本)
%cdMe%
Run Code Online (Sandbox Code Playgroud)
Wil*_*ord 25
您可以制作批处理脚本并将其保存到您的路径中。
在 Linux 上,您可以制作一个脚本并将其添加到~/binWindows上的文件夹中,您也可以这样做。
添加%USERPROFILE%\bin到您的PATH环境变量。然后将您的脚本保存在那里。
quickcd.cmd
@echo off
cd /d a_very_long_path
Run Code Online (Sandbox Code Playgroud)
现在您可以quickcd在命令行输入。
也可以使用call函数在脚本内部调用它
call quickcd
Run Code Online (Sandbox Code Playgroud)
小智 19
subst
如果你真的想绕过这样的事情:
C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final
Run Code Online (Sandbox Code Playgroud)
您可以使用该subst命令将该长路径映射到单独的驱动器号
subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final
Run Code Online (Sandbox Code Playgroud)
然后,当您想跳转到该文件夹时,只需m:在命令行中输入即可。
这样做的优点doskey是它适用于所有批处理程序,并显示在 Windows 中的任何文件对话框中。
如果您不再需要映射:
subst m: /D
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以使用 windows 使用的相同技巧:设置环境变量(或只是批处理上下文中的变量),例如有一个环境变量 %windir%(和其他一些)所以你可以做一个
cd C:\Windows\
Run Code Online (Sandbox Code Playgroud)
或者
cd %windir%
Run Code Online (Sandbox Code Playgroud)
做同样的事情。所以,你所要做的就是:
set "mydir=C:\very\long\path\to\my\data\"
Run Code Online (Sandbox Code Playgroud)
之后,您可以执行以下操作(无论您身在何处):
dir %mydir%
Run Code Online (Sandbox Code Playgroud)
或者
cd %mydir%
Run Code Online (Sandbox Code Playgroud)
或任何你想要的。
小智 10
与 Linux 不同,在 Windows 中别名可以接受参数,并且可以给定参数以将这些参数分配到它们的定义中。
内部内置命令是doskey,这意味着它不是位于的外部可执行文件,%SystemRoot%\System32而是默认情况下cmd.exe其本身位于%SystemRoot%或%Windir%两者都指向C:\Windows文件夹的功能。
Doskey 定义了许多其他的别名。在 Windows 术语中,别名称为宏。设置您使用的别名
doskey alias=command $1 $2 ... $9 or $* (to catch them all)
Run Code Online (Sandbox Code Playgroud)
这里$1指向第一个参数,并$*指向所有参数。
如果只有一个参数可以省略被视为特殊字符的空格,即作为分隔符(用于命令),我总是使用$*双引号$1。
此外,您可以在单独的文件中定义别名宏,例如LinuxAliases.macro,然后使用
doskey /macrofile=LinuxAliases.macro
Run Code Online (Sandbox Code Playgroud)
它将仅为当前会话加载文件中定义的所有别名,这意味着当您exit退出cmd.exe进程(也称为shell和命令提示符)时,它们就消失了。
要获得永久别名,您可以在名为 AutoRun 或 AutoCommand 或类似名称的注册表编辑器键中的某处键入完整命令,我现在无法在宏文件的内部语法旁边回忆起来:P
小智 8
您可以使用doskey.exe,这是一个示例:
doskey qcd=cd [pathname]
Run Code Online (Sandbox Code Playgroud)
现在,如果您键入qcd,它将cd到该路径。
以下是有关doskey宏的一些帮助:
doskey [macroname]=[command]
Run Code Online (Sandbox Code Playgroud)
这是最简单的形式,下面是一个例子:
doskey word=echo This is a really, really long sentence.
Run Code Online (Sandbox Code Playgroud)
如果您输入word输出为:
这真是一个非常非常长的句子。
您可以使用 $1-$9 作为参数,下面是一个示例:
doskey npd=notepad $1
Run Code Online (Sandbox Code Playgroud)
如果您输入npd它将打开记事本,但如果我们输入npd test.txt它将在记事本中打开test.txt。
您可以将 $* 用于所有参数,这是另一个示例:
doskey prt=echo $*
Run Code Online (Sandbox Code Playgroud)
如果你输入,prt This is short.那么输出将是:
这很短。
您可以将 $T 用于多个命令,下面是一个示例:
doskey newline=echo $1 $T echo $2
Run Code Online (Sandbox Code Playgroud)
如果你输入,newline Hello and那么输出将是:
你好
和
我希望你明白。
| 归档时间: |
|
| 查看次数: |
251739 次 |
| 最近记录: |