![](/img/trans.png)
[英]How to write an XML tag with double quotes using command prompt echo command
[英]Does echo inside “if exists” always requires double quotes in windows command prompt?
我正在嘗試查找文件的存在,然后在命令提示符下按如下所示打印目錄:
C:\> if exist "C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" (echo C:\Program Files(x86)\Microsoft Visual Studio 14.0\)
失敗並顯示以下錯誤:
\Microsoft was unexpected at this time.
如果我將命令重寫為
C:\> if exist "C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" (echo "C:\Program Files(x86)\Microsoft Visual Studio 14.0\")
打印:
"C:\Program Files(x86)\Microsoft Visual Studio 14.0\"
我利用了該命令的輸出,它周圍的引號引起了一些問題。 有什么辦法可以在不添加引號的情況下回顯它?
該問題是在括號echo
部分,閉合)
在(x86)
被認為是開口的對應(
在前面的echo
。
if exist "C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" (echo C:\Program Files(x86)\Microsoft Visual Studio 14.0\)
rem // ^ ^
rem // +opening-----------closing+
因此,您有兩種選擇:
刪除整個echo
命令行周圍的(
/ )
:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" echo C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\
或轉義(x86)
的括號,例如:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" (echo C:\\Program Files^(x86^)\\Microsoft Visual Studio 14.0\\)
要么:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" (echo C:\\Program Files(x86^)\\Microsoft Visual Studio 14.0\\)
除非有必要,否則條件命令部分的括號是沒有必要的:
您要構建多行塊:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" ( echo C:\\Program Files^(x86^)\\Microsoft Visual Studio 14.0\\ )
或者您想使用else
子句:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" (echo C:\\Program Files^(x86^)\\Microsoft Visual Studio 14.0\\) else echo ERROR: file not found!
或以上各項的組合:
if exist "C:\\Program Files(x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat" ( echo C:\\Program Files^(x86^)\\Microsoft Visual Studio 14.0\\ ) else ( echo ERROR: file not found! )
有關更多信息,請參見: IF
。
大多數問題已經由aschipfl的答案進行了解釋。
但是通常情況下,您無法或不想轉義括號,因為您正在使用內容未知的變量,例如%ProgramFiles%
。
如果您想在不加引號且沒有轉義的情況下回顯它們,則可以使用延遲擴展。
setlocal EnableDelayedExpansion
set "dir=!ProgramFiles!"
if exist "!dir!" (
echo !dir!
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.