2016-01-14 80 views
0

我試圖發出一個命令,該命令由於格式限制而需要換行符。「 n」在Windows命令行中未被正確識別

我需要將一個文件提交到CVS存儲庫,但是存儲庫有一個限制,要求以下列格式包含一條消息。

Change #: <number> 
Description: <description> 

命令用於提交的文件是:

cvs commit -m "Change #: <number>\nDescription: <description>" <filename> 

然而,當我發出命令它似乎並沒有得到妥善識別斷線之後,它沒有說,我給它一個無效更改#和無說明。

如何在不嘗試發出兩個單獨命令的情況下識別新行?這種格式

+0

也許「\ r \ n」爲真正的Windows換行符? –

+0

我給了一個嘗試,它也沒有工作:( – tjwrona1992

+0

嘗試carot^http://superuser.com/questions/150116/how-can-i-insert-a-new-line-in-a- cmd-exe-command –

回答

0

實際上,我試圖調用Perl腳本命令,並找到可接受的解決方法。出於某種原因,將命令調用爲system命令似乎失敗了,但如果使用反引號將其調用,則它可以正常工作。

# Fails 
system 'cvs commit -m "Change #: <number>\nDescription: <description>" <filename>' 

# Works 
my $output = `cvs commit -m "Change #: <number>\nDescription: <description>" <filename>` 

請告訴我搞笑的是在處理「\ n」使用system命令和反引號似乎並沒有被記錄任何地方之間的差異。

+0

[在此處記錄:](http://www.perlhowto.com/executing_external_commands)「如果參數[to system]是標量,則system()使用shell執行命令」。 –

1

嘗試PowerShell的:

 
start-process -FilePath cvs.exe -ArgumentList "commit -m `"Change #:123 `nDescription:my description`"" 
+0

如何在腳本中使用換行符?它會解決[這個問題](http://stackoverflow.com/q/34491463/886887)嗎? –

+0

其實..這是一個有趣的職位。我沒有意識到解析器在這個意義上被打破了(如果它確實被證實了)。我相信啓動過程使用createprocess,如果是的話,這應該是好的,但讓我們看看。 –

+0

哦,你的意思是一個Powershell腳本;我的錯。那麼可能不相關。 –