将命令插入启动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
将无法工作,因为它是没有输入部分的单行。
但只需在其后添加一个新行即可。
我希望所有这些都有意义。
我正在尝试将文本文件的内容插入 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
将无法工作,因为它是没有输入部分的单行。
但只需在其后添加一个新行即可。
我希望所有这些都有意义。