2017-04-19 94 views
1

我想插入一个文本文件的内容为cmd 控制台,通过使用:插入命令到启动CMD

start cmd.exe < c:\text.txt 

我也试过:

start cmd.exe | c:\text.txt 

然而,这两个打开cmd外壳,但没有任何东西能通过。

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

+0

下面的答案并不完全回答这个问题,但下面的对话有一个很好的hackish,但优雅的解决方案,回应这个问题! – uniXVanXcel

回答

2

这样的事情?

通过Cmd.exe本身,

type C:\Text.txt 

如果它是一个批处理文件,然后

type C:\Text.txt 
pause 

,或者只看到内容,使用更

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 

实际上将尽一切序列这些命令,首先它会平,做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将顺序执行的一切。这里的区别是它逐行读取文件并显示它运行的每个命令。所以你的输出就会是这样的:

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 

将不起作用,因为它是没有输入部分的单行。

但通过添加一个新行后,它将使其工作。

我希望所有这些都有道理。

+0

谢谢,但我不确定..它闪烁的控制台,然后它消失了,没有时间去真正看到里面是否有任何东西.. – uniXVanXcel

+0

你是否在一个批处理文件中这样做?如果是,则在批处理文件末尾键入暂停。我将修改答案。 –

+0

你的文本文件的内容是什么? –