将命令插入启动cmd

insert command into start cmd

我正在尝试将文本文件的内容插入 cmd 控制台,使用:

start cmd.exe < c:\text.txt

我也试过:

start cmd.exe | c:\text.txt

然而,两者都打开 cmd shell 但没有任何内容通过。

最后我的意思是我有一个调度程序 jenkins,当使用 start 命令打开它时,我在控制台中传递了文本文件的内容。所以我不是简单地尝试打印到 cmd 控制台;对于不同的情况,我可以只使用 echo

是这样的吗?

来自CMD.exe本身,

type C:\Text.txt

如果是批处理文件,则

type C:\Text.txt
pause

或仅查看内容,使用 more

more C:\Text.txt

如果您实际上想要从文件中执行 运行 命令,而不是尝试将文本文件中的命令插入 cmd 控制台,您应该将其构建为可执行的批处理文件。您可以通过将文件重命名为 .bat.cmd

来完成此操作

然后您将命令插入文件并通过双击文件或从调度程序等 运行 执行它。这是批处理或 cmd 文件的示例:

echo Please wait while I execute.
tp merge $/ServerFolderA $/ServerFolderB

所以只是对您的初始命令的一些解释。当你 运行:

start cmd.exe | c:\text.txt

您实际上告诉系统从单个命令 运行 多个可执行文件。管道命令就像分隔符一样指定每个命令。所以这个:

ping 127.0.0.1 | nslookup www.google.com | cmd.exe | c:\text.txt

实际上会按顺序执行所有这些命令,首先它会执行 ping、do nslookup、打开 cmd.exe 然后打开 c:\text.txt

您的方向是正确的,但我猜您在文件中只有一行,而不是换行。

start cmd.exe < Text.txt

这将使用 Text.txt 文件作为应答文件,因此如果我编辑它并插入以下内容:

echo This is an answer file
ping 127.0.0.1
ping 10.132.4.99
echo Completed all commands

然后 运行 start cmd.exe < Text.txt 它将按顺序执行所有内容。这里的区别在于它逐行读取文件并显示每个命令 运行s。所以你的输出将是这样的:

C:\>echo this is an answer file
this is an answer file
ping 127.0.0.1

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ping 10.132.4.99

Pinging 10.132.4.99 with 32 bytes of data:
Reply from 10.132.4.99: bytes=32 time=3ms TTL=254

Ping statistics for 10.132.4.99:
   Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
   Minimum = 3ms, Maximum = 8ms, Average = 4ms

如您所见,它可以完美运行,但它会显示您正在执行的每个命令 运行,但它不会 运行 最后一个命令 echo Completed all commands。因此,对于 运行 所有命令,您始终必须在最后一个命令之后添加一个新行。但是,当您将其重命名为 .cmd 时,它只会显示 运行 命令,而不显示每行 运行 和 运行 的命令,直到结束。答案文件的另一个问题是它逐行读取,因此在答案文件中有 3 个没有文本的新行将导致类似这样的结果

C:\>
C:\>
C:\>

所以答案文件中只有这个:

ping 127.0.0.1

将无法工作,因为它是没有输入部分的单行。

但只需在其后添加一个新行即可。

我希望所有这些都有意义。