[英]What does “@” mean in Windows batch scripts
我看到@
在這種情況下使用:
@echo off
@echo start eclipse.exe
@
這里是什么意思?
這意味着不輸出相應的命令。 比較以下兩個批處理文件:
@echo foo
和
echo foo
前者只有foo
作為輸出,而后者打印
H:\Stuff>echo foo
foo
(至少在這里)。 可以看出,運行的命令也是可見的。
echo off
將為完整的批處理文件關閉此功能。 但是, echo off
調用本身仍然可見。 這就是為什么您會在批處理文件的開頭看到@echo off
。 關閉命令回顯,不要回顯關閉它的命令。
在更復雜的批處理文件中刪除該行(或將其注釋掉)通常是一個有用的調試工具,因為您可以看到在錯誤消息之前運行的內容。
這意味着“不要將命令回顯到標准輸出”。
比較奇怪的是,
echo off
會將echo off
發送到輸出! 所以,
@echo off
將此自動回顯行為設置為關閉 - 並在所有未來命令中停止它。
來源: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx? mfr= true
默認情況下,批處理文件將在運行時顯示其命令。 @echo off 的第一個命令的目的是關閉此顯示。 命令“echo off”關閉整個腳本的顯示,除了“echo off”命令本身。 前面的“at”符號“@”使命令也適用於自身。
@
禁用該命令的回顯。 沒有它, echo start eclipse.exe
行將打印預期的start eclipse.exe
和echo start eclipse.exe
行。
echo off
關閉默認命令回顯。
所以@echo off
靜默關閉命令回顯,只輸出想要寫入的批處理作者實際寫入。
它繼承了 DOS 的含義。 @ :
在 DOS 3.3 及更高版本中,隱藏批處理命令的回顯。 該命令生成的任何輸出都會被回顯。
沒有它,您可以使用echo off
命令關閉命令回顯,但該命令將首先被回顯。
包含 @ 的另一個有用時間是在命令行中使用FOR
時。 例如:
FOR %F IN (*.*) DO ECHO %F
上一頁線顯示每個文件:在命令提示符中, ECHO
命令,結果ECHO
命令。 這條路:
FOR %F IN (*.*) DO @ECHO %F
只顯示ECHO
命令的結果。
您可以像這樣在“scriptBlock”中包含 @:
@(
echo don't echoed
hostname
)
echo echoed
尤其不要那樣做:)
for %%a in ("@") do %%~aecho %%~a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.