prompt怎么用 - windows命令行运行bat




如何在Windows CMD的一行中运行两个命令? (11)

我想在Windows CMD控制台中运行两个命令。

在Linux中,我会这样做: touch thisfile ; ls -lstrh touch thisfile ; ls -lstrh

它如何在Windows上完成?


&是Bash的等价物; (运行命令), &&&&的Bash等同物(只有当前一个没有导致错误时才运行命令)。


cmd /c ipconfig /all & Output.txt

该命令执行命令并在单个命令中打开Output.txt文件


不, cd / && tree && echo %time% 。 回显的时间在第一个命令执行时。

管道有一些问题,但只要人们知道它是如何工作的并不重要。


为了同时执行两个命令,您必须在这两个命令之间放置一个&(&符号)符号。 像这样:

color 0a & start chrome.exe

干杯!


在同一行上运行多个命令时可能会使用多个处理符号 ,并且可能导致在某些情况下处理重定向,在其他情况下更改输出,或者只是失败。 一个重要的情况是放置在操纵变量的相同行命令上。

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

正如你在上面的例子中看到的,当使用变量的命令放在同一行时,你必须使用延迟扩展来更新你的变量值。 如果您的变量已建立索引,请使用带%%修饰符的CALL命令在同一行上更新其值:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5

如果你想创建一个cmd快捷方式(例如在桌面上),添加/ k参数(/ k表示保持,/ c将关闭窗口):

cmd /k echo hello && cd c:\ && cd Windows

您可以使用调用来克服环境变量过早评估的问题 - 例如

set A=Hello & call echo %A%

您可以使用&来一个接一个地运行命令。 例如: c:\dir & vim myFile.txt


所以,我试图从上下文菜单启用运行RegAsm (寄存器汇编)的特定任务。 我所遇到的问题是,结果会在我读懂它之前闪现并消失。 所以我尝试了管道Pause ,当命令失败时不起作用(这里提到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"

现在我有一个很好的右键菜单来注册程序集。


来自文档的引用:

使用多个命令和条件处理符号

您可以使用条件处理符号从单个命令行或脚本运行多个命令。 当您使用条件处理符号运行多个命令时,条件处理符号右侧的命令根据条件处理符号左侧的命令结果进行操作。

例如,只有在前一个命令失败的情况下才可以运行命令。 或者,只有在前一个命令成功时才可以运行命令。

您可以使用下表中列出的特殊字符来传递多个命令。

  • & [...]
    command1 & command2
    用于在一个命令行上分隔多个命令。 Cmd.exe运行第一个命令,然后运行第二个命令。

  • && [...]
    command1 && command2
    只有在符号前面的命令成功时,才可用于在&&后面运行命令。 Cmd.exe运行第一个命令,然后仅在第一个命令成功完成时才运行第二个命令。

  • || [...]
    command1 || command2
    用于在||之后运行该命令 只有在||之前的命令 失败。 Cmd.exe运行第一个命令,然后仅在第一个命令未成功完成(接收到大于零的错误代码)时才运行第二个命令。

  • ( ) [...]
    (command1 & command2)
    用于分组或嵌套多个命令。

  • ; or ,
    command1 parameter1;parameter2
    用于分隔命令参数。


那么,你有两个选择:管道,或只是&

DIR /S & START FILE.TXT

要么,

tasklist | find "notepad.exe"

管道( | )更多的是用于输出一个命令,并将其放入另一个命令。 ( & )只是说说运行这个,而那个。







cmd