admin管理员组

文章数量:1631139

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

在Linux中,我会这样

touch thisfile ; ls -lstrh

在Windows上如何完成?


#1楼

如果要创建cmd快捷方式(例如在您的桌面上),请添加/ k参数(/ k表示保留,/ c将关闭窗口):

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

#2楼

cmd /c ipconfig /all & Output.txt

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


#3楼

因此,我试图从上下文菜单中启用运行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"

现在,我有了一个不错的右键单击菜单来注册一个程序集。


#4楼

您可以使用call来解决环境变量评估过早的问题-例如

set A=Hello & call echo %A%

#5楼

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

管道存在一些问题,但是只要人们知道其工作原理,它就并不重要。


#6楼

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

@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

#7楼

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

color 0a & start chrome.exe

干杯!


#8楼

我尝试在同一窗口中执行两次ping操作,这是同一行上的串行命令。 完成第一个命令后,运行第二个命令。

解决方案是在Windows 7命令提示符下与start /b结合使用。

照常启动,不带/b ,然后在单独的窗口中启动。

在同一行中启动的命令是:

start /b command1 parameters & command2 parameters

无论如何,如果您想解析输出,我不建议使用此方法。 我注意到输出在命令的输出之间是混乱的。


#9楼

好吧,您有两个选择:管道,或者只是&

DIR /S & START FILE.TXT

要么,

tasklist | find "notepad.exe"

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


#10楼

再举一个例子:例如,当我们使用gulp构建系统时,

gulp默认>构建

gulp build -构建构建文件夹

gulp watch开始文件监视

gulp dist构建dist文件夹

我们可以用一行来做到这一点:

cd c:\xampp\htdocs\project & gulp & gulp watch

#11楼

很简单:只需用&&符号来区分它们。 例:

echo "Hello World" && echo "GoodBye World".

“ Hello World”之后将印刷“ Goodbye World”。


#12楼

当您尝试在一行中使用或操作变量时,请注意其内容! 例如,如下所示的变量

 PATH=C:\\Program Files (x86)\\somewhere;"C:\\Company\\Cool Tool";%USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps; 

如果将其用作%PATH%可能会导致很多难以处理的麻烦

  1. 右括号会终止您的组语句
  2. 双引号不允许您使用%PATH%来处理括号问题
  3. 引用的变量(如%USERPROFILE%包含什么?

#13楼

就在这里。 是&

&&将在命令1完成时执行命令2,前提是它没有失败。

&将会执行。


#14楼

自2000年以来,在所有Microsoft操作系统上都采用这种格式,并且在今天仍然不错:

dir & echo foo

如果要仅在第一个命令成功退出时才执行第二个命令:

dir && echo foo

在一行上执行多个命令的单一&语法可以追溯到Windows XP,Windows 2000和某些早期的NT版本。 (根据一位评论者的说法,至少为4.0。)

向下滚动此页面还有很多其他要点。

历史数据如下,对于那些可能会觉得很有教育意义的人。

在此之前,&&语法只是外壳替换4DOS的一项功能,然后将该功能添加到Microsoft命令解释器中。

在Windows 95、98和ME中,您将改为使用竖线字符:

dir | echo foo

在MS-DOS 5.0和更高版本中,通过某些较早的Windows和NT版本的命令解释器,(未记录)命令分隔符为字符20(Ctrl + T),在此将用^ T表示。

dir ^T echo foo

#15楼

您可以使用&依次运行命令。 例如: c:\\dir & vim myFile.txt


#16楼

来自文档的报价:

  • 来源:Microsoft,Windows XP Professional产品文档, 命令外壳概述

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

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

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

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

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

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

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

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

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


#17楼

&是Bash的等价物; (运行命令)和&&是击等效的&& (运行命令仅当先前没有引起错误)。

本文标签: 命令两个如何在cmdWindows