如何使用&&将多个命令行合并为一行并在windows中执行

如何使用&&将多个命令行合并为一行并在windows中执行

我有一个复杂的程序,它需要执行一系列命令,我需要使用 && 将它们组合成一个命令,但这会使这个命令变得很长,因此很难阅读和维护。

因此我尝试使用 set 来组合它们,组合命令可以正确打印,但无法正确执行,下面是一个例子,有人能帮我吗?提前谢谢!

@echo off 
set command=dir
set command=%command% ^^^&^^^& tree

rem this line will print the combined string
echo %command%

rem this line will not execute the combined string
%command%

pause

答案1

我不知道你为什么失败了。不要试图逃避&&,你会没事的。

转义&&不再是连接命令。转义告诉 cmd.exe 将它们视为文本。如果您尝试通过命令显示这一点echo,它将无法正常工作,因为将&&获得文字解释。

这是我刚刚制作的简单批处理文件效果非常好

@echo off
pushd %TEMP%
set TheCommand=tree
set TheCommand=%TheCommand% && dir

%TheCommand%

popd

结果(来自桌面上名为“test.bat”的批处理):

C:\Users\XXXXX\Desktop>test
 Volume in drive C has no label.
 Volume Serial Number is XXXXXX

 Directory of C:\Users\XXXXX\AppData\Local\Temp

03/09/2023  12:44 PM    <DIR>          .
03/09/2023  12:44 PM    <DIR>          ..
03/09/2023  12:31 PM         6,634,180 17e7aa4d-2647-47b0-b8ca-51ae8002695d.tmp
03/09/2023  12:29 PM                 0 189c12c6-9281-433a-94a4-2f2ebd4c7d5d.tmp
03/09/2023  12:44 PM                 0 2b1fb125-4350-4934-9e68-427321701000.tmp
03/09/2023  12:29 PM             5,763 38145745-fdf5-4cd2-ad17-d4277a2def23.tmp
03/09/2023  12:31 PM         2,923,294 66835aae-283d-433a-84bb-bf5da4aa777e.tmp
03/09/2023  12:31 PM           218,820 78abe627-e18a-4ec8-b920-e0c20eef117c.tmp
03/09/2023  12:31 PM           444,036 99121e46-5b7e-4985-9f6b-5e48f03963ad.tmp
03/09/2023  12:29 PM                 0 c7868484-5d58-48b0-a2b0-9dc22811c155.tmp
02/03/2023  07:58 AM    <DIR>          Diagnostics
03/09/2023  12:29 PM         4,194,332 ExchangePerflog_8484fa31fa76b577cfcccd43.dat
03/09/2023  12:30 PM        12,730,645 fcc5fb22-4ce2-48fc-9f66-2a8b31088e1d.tmp
03/09/2023  12:43 PM    <DIR>          Outlook Logging
03/09/2023  12:29 PM             1,205 VCXSrv.0.log
03/09/2023  12:43 PM                 0 {EB6CCD1B-254A-448B-B6D0-50D80EF04749} - OProcSessId.dat
              12 File(s)     27,152,275 bytes
               4 Dir(s)  741,288,493,056 bytes free
Folder PATH listing
Volume serial number is XXXXXX
C:.
├───Diagnostics
│   ├───EXCEL
│   ├───ONENOTE
│   │   └───Upload
│   ├───OUTLOOK
│   ├───POWERPNT
│   │   └───Upload
│   └───WINWORD
│       └───Upload
└───Outlook Logging

C:\Users\XXXXX\Desktop>

答案2

这并不理想,但您可以在新 shell 中执行该命令(cmd /c):

set command=dir
set command=%command% ^^^&^^^& tree

rem this line will print the combined string
echo %command%

rem execute the combined string
cmd /c %command%

答案3

要执行用字符串连接构建的命令,您需要使用调用

就像这样

call %command%

如果你想阅读更多通话详情,可以在这里阅读 https://ss64.com/nt/call.html

相关内容