2017-04-19 61 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

你的文本文件的內容是什麼? –