經過Windows批處理文件在多行中拆分長命令

如何在批處理文件中的多行上拆分長命令? 測試


#1樓

(這基本上是對Wayne答案的重寫,可是因爲對插入符號的混淆被清除了。因此我把它做爲CW發佈。我並不羞於編輯答案,但徹底重寫它們彷佛不合適。) spa

您可使用插入符號( ^ )分隔長行,只需記住插入符號及其後面的換行符將徹底從命令中刪除 ,所以若是您將其放在須要空格的位置(例如參數之間),請必定要包括空格(在^以前,或在下一行的開頭 - 後一個選擇可能有助於使它更清晰,這是一個延續)。 code

示例:( 全部在Windows XP和Windows 7上測試過) three

xcopy file1.txt file2.txt

能夠寫成: 字符串

xcopy^
 file1.txt^
 file2.txt

要麼 get

xcopy ^
file1.txt ^
file2.txt

甚至 io

xc^
opy ^
file1.txt ^
file2.txt

(最後一個是有效的,由於xc^沒有空格,下一行的開頭沒有空格。因此當你刪除^和換行符時,你會獲得... xcopy 。) for循環

爲了便於閱讀和理智,最好只在參數之間進行分解(確保包含空格)。 變量

確保^ 不是批處理文件中的最後一件事,由於這彷佛是一個主要問題擴展


#2樓

然而,彷佛在for循環的值的中間分割不須要插入符號(實際上嘗試使用一個將被視爲語法錯誤)。 例如,

for %n in (hello
bye) do echo %n

請注意,在hello以後或再見以前甚至不須要空格。


#3樓

多個命令能夠放在括號中並分佈在多個行中; 因此像echo hi && echo hello類的東西能夠像這樣:

( echo hi
  echo hello )

變量也能夠幫助:

set AFILEPATH="C:\SOME\LONG\PATH\TO\A\FILE"
if exist %AFILEPATH% (
  start "" /b %AFILEPATH% -option C:\PATH\TO\SETTING...
) else (
...

另外我注意到插入符號( ^if條件因素只有在存在空格時才能使用它們:

if exist ^

#4樓

插入符號的規則是:

在行尾的插入符號附加下一行,附加行的第一個字符將被轉義。

您能夠屢次使用插入符號,但完整的行不得超過〜8192個字符的最大行長度(Windows XP,Windows Vista和Windows 7)。

echo Test1
echo one ^
two ^
three ^
four^
*
--- Output ---
Test1
one two three four*

echo Test2
echo one & echo two
--- Output ---
Test2
one
two

echo Test3
echo one & ^
echo two
--- Output ---
Test3
one
two

echo Test4
echo one ^
& echo two
--- Output ---
Test4
one & echo two

要禁止轉義下一個字符,可使用重定向。

重定向必須在插入符號以前。 可是在插入符號以前存在一種重定向的好奇心。

若是您在插入符號處放置令牌,則會刪除令牌。

echo Test5
echo one <nul ^
& echo two
--- Output ---
Test5
one
two


echo Test6
echo one <nul ThisTokenIsLost^
& echo two
--- Output ---
Test6
one
two

而且還能夠將換行符嵌入到字符串中:

setlocal EnableDelayedExpansion
set text=This creates ^

a line feed
echo Test7: %text%
echo Test8: !text!
--- Output ---
Test7: This creates
Test8: This creates
a line feed

空行對成功相當重要。 這僅適用於延遲擴展,不然換行後將忽略該行的其他部分。

它有效,由於行末端的插入符號忽略下一個換行符並轉義下一個字符,即便下一個字符也是換行符(在此階段始終忽略回車符)。


#5樓

只要您記住插入符號及其後面的換行符被徹底刪除,您就可使用插入符號^來劃分長行。 所以,若是應該有一個空間,你要打破線,包括一個空格。 更多關於如下內容。

例:

copy file1.txt file2.txt

將寫成:

copy file1.txt^
 file2.txt
相關文章
相關標籤/搜索