- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 cmd
中打开一个文件并在 Sublime Text 的特定组中编辑它,所以我创建了一个像这样的 doskey
rem version 1, ^&
doskey st="path_to\Sublime Text 3\sublime_text" --command "focus_group { \"group\": $1 }" ^& "path_to\Sublime Text 3\sublime_text" $2
rem version 2, $T
doskey st="path_to\Sublime Text 3\sublime_text" --command "focus_group { \"group\": $1 }" $T "path_to\Sublime Text 3\sublime_text" $2
^&
之前的命令或 $T
将关注ST群$1
你想要,在 ^&
之后命令或 $T
将打开文件 $2
然后在cmd
>>> rem version 1, ^&
>>> st 0 test.py & rem press enter
>>>
----------------------------------
>>> rem version 2, $T
>>> st 0 test.py & rem press enter, one more prompt compare version 1
>>>
>>>
再试一次
rem alias.bat in C:\Windows\System32, work like alias in linux
doskey lscd1=dir ^& cd ..
doskey lscd2=dir $T cd ..
结果
path1\path2> lscd1
Volume in drive C is OS
Volume Serial Number is DA7D-663C
Directory of path2
11/24/2019 09:45 PM 0 test.py
path1>
---------------------------------
path1\path2> lscd2
Volume in drive C is OS
Volume Serial Number is DA7D-663C
Directory of path2
11/24/2019 09:45 PM 0 test.py
path1\path2>
path1>
Doc的 $T
是
$T or $t Separates commands. Use either of these special characters to separate commands when you create macros or type commands on the doskey command line. These special characters are equivalent to using the ampersand (&) on a command line.
我猜 ^&
是'escape the ampersand ',为什么这两个行为不同?
最佳答案
有趣的是,我以前从未注意到差异。
当使用 $T
时,宏分别向 cmd.exe 发出每个命令,每个命令都有自己的提示。然而,随后的命令并没有回显到屏幕上,所以看起来有点奇怪。
例如:
C:\test>doskey $T=echo command 1 $T echo command 2
C:\test>$T
command 1
C:\test>command 2
C:\test>
当您使用 ^&
时,doskey 将整个构造视为一次性传递给 cmd.exe 的单个命令,因此您不会收到任何额外提示。请注意,^
在定义阶段被消耗,因此只有 &
存储在定义中,而不是 ^&
。
C:\test>doskey amp=echo command 1 ^& echo command 2
C:\test>amp
command 1
command 2
C:\test>
如果添加 echo off
和 echo on
,您可以获得 $T
输出看起来像 ^&
在你的主要定义之前和之后
C:\test>doskey $T2=echo off $T echo command 1 $T echo command 2 $T echo on
C:\test>$T2
command 1
command 2
C:\test>
如果我要使用 doskey 宏,那么我更愿意使用 ^&
。但我很少使用它们,因为它们有严重的局限性:
FOR/F %A in ('macro') do ... 一起使用时不执行 ...
&
、&&
或 ||
组合时不执行更新
当我说 $T
导致每个命令获得自己的提示时,这意味着每个命令都被单独解析。这有一个潜在的优势,因为您的宏可以设置变量 var
,然后在以后访问值 %var%
而无需使用延迟扩展。当使用 ^&
时,所有命令都会被一次解析,所以你不能使用 %var%
。
这是一个愚蠢的例子,展示了你如何不能将 %v%
与 ^&
一起使用,但你可以将 %v%
与$T
C:\test>set "v="
C:\test>doskey m1=set "v=OK" ^& echo v=%v% - doesn't work with ^^^^^^^& ^& set "v="
C:\test>m1
v=%v% - doesn't work with ^&
C:\test>doskey m2=set "v=OK" $T echo v=%v% - works with $^^T $T set "v="
C:\test>m2
C:\test>v=OK - works with $T
C:\test>
一个更实际的例子是一个执行命令然后根据结果 %errorlevel%
做某事的宏。
关于batch-file - doskey 中的 `^&` 和 `$T` 行为相似但不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59019240/
是否可以使用 DOSKEY 调用别名?简单的例子..我想做这样的事情: DOSKEY a=someCommand DOSKEY b=someOtherCommand DOSKEY c=andAThir
我只想知道是否有办法从另一个调用一个 doskey 宏。我尝试了以下方法,但不起作用: >doskey cleanpix=%PATH%\cleanpix.bat >doskey cp=cleanpix
我正在创建一些我经常使用的常用 doskey 命令。我试图在 doskey 宏中有多个变量,有时一个变量中会有空格。我试过引用变量值,但它不起作用。唯一有效的方法就是在宏字符串的末尾添加更多变量。 我
简短版本 1 - 我有一个多媒体键盘。 制造商:天才型号名称:KB29e 或 K641类型:多媒体+计算器 2 - 在 facebook 上的一些评论中,有人告诉我,在终端中使用类似 $ setxkb
继对 this question 的回答之后 对于 Windows 命令提示符,我可以按如下方式定义别名: @echo off DOSKEY ns=npm start DOSKEY nsr=npm r
我创建了一个要删除的 doskey 宏。我该如何删除它?如何查看我创建的所有宏? 最佳答案 查看 doskey documentation : Displays doskey macros for a
我继承了一堆漂亮的 doskey 宏,并试图按关注的领域对它们进行排序。到目前为止,我还没有找到任何以任何方式提及评论的引用资料,但这似乎是一个很常见的场景,如果它以某种方式不受支持,我会感到惊讶。
我正在创建一个简单的环境设置 cmd 脚本,我正在使用 doskey设置各种别名和宏。我所在的环境有各种存储库,我想创建一些宏来快速导航流行目录。 我目前有以下几点: @echo off Setloc
我正在编写一个以密码作为参数的 BAT 脚本。我想从命令历史记录和输出窗口中删除所有提及密码的内容。我将此添加到脚本的末尾: cls doskey /reinstall 我第一次运行我的脚本时,它完全
我正在用多个命令编写 DOSKEY,以 $T 分隔,我需要将当前目录的 PATH 复制到 cipbord(这样我可以在 CMD 之外使用它)并继续执行命令。我试过 chdir | clip 通过它在之
我通过批处理脚本 (script1.bat) 添加了一个 DOSKEY 别名,并尝试在另一个批处理脚本中调用它。它不起作用。 script1.bat: set USER_SETTINGS=%DRIVE
我有一个 caller.cmd 文件,它的 DOSKEY 设置如下: DOSKEY startnow=call powershell getscalled.ps1 现在脚本 getscalled.ps
我有多个按以下方式定义的 doskeys: doskey ll=dir $* doskey grep=findstr $* doskey make=mingw32-make $* 我想在单行命令中结合
我正在尝试定义一个将 STDOUT 和 STDERR 输出重定向到文件的 DOSKEY 宏。 doskey 将通过运行批处理文件来设置。我只能使用以下方法为 STDOUT 执行此操作: doskey
我从这篇文章中得到了一个有用的提示:https://stackoverflow.com/a/374363/151453 ,但被 doskey 的特殊字符所困扰。 (环境:Windows 7 和 Win
我有我这样设置的 DOSKey 别名 (Aliases in Windows command prompt) 从注册表调用它,我希望能够从 powershell 运行它;有没有办法做到这一点?它真正做
这可能吗?我试过this blog ,但它不起作用。 我有一个大约 50 个左右的宏文件 doskey宏,用于cmd.exe . 我运行类似: doskey /exename=powershell.e
我想在 cmd 中打开一个文件并在 Sublime Text 的特定组中编辑它,所以我创建了一个像这样的 doskey rem version 1, ^& doskey st="path_to\Sub
我使用的是 Windows PowerShell,它是使用 doskey 宏配置的。 我有一个名为 Macros.doskey 的文件. 105=code E:\static5\105 135=cod
我是一名优秀的程序员,十分优秀!