fly*_*ire 861 windows command-line cmd batch-file
我想在Windows CMD控制台中运行两个命令.
在Linux中,我会这样做
touch thisfile ; ls -lstrh
Run Code Online (Sandbox Code Playgroud)
它是如何在Windows上完成的?
djd*_*lib 1183
像这样在2000年以来的所有Microsoft操作系统上,今天仍然很好:
dir & echo foo
Run Code Online (Sandbox Code Playgroud)
如果您希望第二个命令仅在第一个命令成功退出时执行:
dir && echo foo
Run Code Online (Sandbox Code Playgroud)
在一行上执行多个命令的单个&符号(&)语法可以追溯到Windows XP,Windows 2000和一些早期的NT版本.(至少4.0,据一位评论者说.)
关于这一点还有很多其他要点,你会发现在这个页面上向下滚动.
随后的历史数据,对于那些可能发现它具有教育意义
在此之前,在将该功能添加到Microsoft命令解释程序之前,&&语法只是shell替换4DOS的一项功能.
在Windows 95,98和ME中,您将使用管道字符:
dir | echo foo
Run Code Online (Sandbox Code Playgroud)
在MS-DOS 5.0及更高版本中,通过一些早期的Windows和NT版本的命令解释器,(未记录的)命令分隔符是字符20(Ctrl + T),我将在这里用^ T表示.
dir ^T echo foo
Run Code Online (Sandbox Code Playgroud)
Rai*_*han 552
文件引用:
使用多个命令和条件处理符号
您可以使用条件处理符号从单个命令行或脚本运行多个命令.当您使用条件处理符号运行多个命令时,条件处理符号右侧的命令将根据条件处理符号左侧的命令结果进行操作.
例如,您可能只想在上一个命令失败时运行命令.或者,您可能只想在上一个命令成功时运行命令.
您可以使用下表中列出的特殊字符来传递多个命令.
& [...]
command1 & command2
用于在一个命令行上分隔多个命令.Cmd.exe运行第一个命令,然后运行第二个命令.
&& [...]
command1 && command2
用于仅在符号前面的命令成功时运行&&后面的命令.Cmd.exe运行第一个命令,然后仅在第一个命令成功完成时运行第二个命令.
|| [...]
command1 || command2
用于在||后面运行命令 只有前面的命令是|| 失败.Cmd.exe运行第一个命令,然后仅在第一个命令未成功完成时才运行第二个命令(接收大于零的错误代码).
( ) [...]
(command1 & command2)
用于分组或嵌套多个命令.
; or ,
command1 parameter1;parameter2
用于分隔命令参数.
man*_*lds 71
&
是;
(运行命令)&&
的Bash等价物,是Bash的等价物&&
(仅当前一个没有引起错误时才运行命令).
Tro*_*ike 18
如果要创建cmd快捷方式(例如在桌面上)添加/ k参数(/ k表示保持,/ c将关闭窗口):
cmd /k echo hello && cd c:\ && cd Windows
Run Code Online (Sandbox Code Playgroud)
小智 14
您可以使用调用来克服过早评估环境变量的问题 - 例如
set A=Hello & call echo %A%
Run Code Online (Sandbox Code Playgroud)
Vik*_*han 12
在Windows中,我使用了上述所有解决方案&, &&
,但没有任何效果最后';'
符号对我有用
npm install; npm start
Run Code Online (Sandbox Code Playgroud)
在同一行上运行多个命令时可以使用许多处理符号,并且在某些情况下可能导致处理重定向,在其他情况下会改变输出,或者只是失败.一个重要的例子是放置操作变量的同一行命令.
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!
0 1
Run Code Online (Sandbox Code Playgroud)
正如您在上面的示例中所看到的,当使用变量的命令放在同一行上时,您必须使用延迟扩展来更新变量值.如果您的变量已编制索引,请使用带有%%修饰符的CALL命令在同一行上更新其值:
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%
path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
Run Code Online (Sandbox Code Playgroud)
小智 7
所以,我试图RegAsm
从上下文菜单启用运行(注册程序集)的特定任务.我遇到的问题是,在我阅读之前,结果会闪现并消失.因此我尝试使用管道Pause
,当命令失败时不起作用(如此处所述暂停命令不在.bat脚本中工作,此处批处理文件命令PAUSE不起作用).所以我试过cmd /k
但是让窗口打开以获得更多命令(我只想读取结果).所以我添加了一个pause
后跟exit
到链,导致以下结果:
cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
这就像一个魅力 - RegAsm在文件上运行并显示其结果,然后显示"按任意键继续..."提示,然后按下键时命令提示窗口关闭.
PS对于可能感兴趣的其他人,您可以使用以下.reg文件条目将dllfile关联添加到.dll文件,然后将RegAsm命令扩展名添加到该文件(请注意转义的引号和反斜杠):
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"
Run Code Online (Sandbox Code Playgroud)
现在我有一个很好的右键菜单来注册一个程序集.
小智 6
在windows中使用&
符号在一行中使用命令
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
Run Code Online (Sandbox Code Playgroud)
就像我们使用的linux一样,
touch thisfile ; ls -lstrh
Run Code Online (Sandbox Code Playgroud)
小智 5
好吧,你有两个选择:管道,或者只是&
:
DIR /S & START FILE.TXT
Run Code Online (Sandbox Code Playgroud)
或者,
tasklist | find "notepad.exe"
Run Code Online (Sandbox Code Playgroud)
管道 ( |
) 更多用于获取一个命令的输出,并将其放入另一个命令。并且 ( &
) 只是说运行这个,那个。
归档时间: |
|
查看次数: |
827502 次 |
最近记录: |