亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

'漂亮打印'窗口%PATH%變量 - 如何拆分';' 在CMD shell中

'漂亮打印'窗口%PATH%變量 - 如何拆分';' 在CMD shell中

慕森卡 2019-08-06 17:47:22
'漂亮打印'窗口%PATH%變量 - 如何拆分';' 在CMD shell中我想在Windows CMD提示符中運行一個簡單的單行程序來打印我的%PATH%變量,每行一個條目。我試過這個:for /f "delims=;" %a in ("%path%") do echo %a但這只打印第一個條目:Z:\>for /f "delims=;" %a in ("%path%") do echo %aZ:\>echo c:\python25\.c:\python25\.另外從上面的輸出中可以看出,這也是打印echo %a命令和輸出。有沒有辦法阻止這個?如果我嘗試一個類似的命令,我會得到所有條目,但仍然得到echo %a輸出垃圾郵件的結果。我不明白為什么以下打印所有條目,但我的嘗試%PATH%沒有。我懷疑我不懂/F開關。Z:\>for %a in (1 2 3) do echo %aZ:\>echo 11Z:\>echo 22Z:\>echo 33
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

簡單的方法是使用


for %a in ("%path:;=";"%") do @echo %~a

這適用于沒有;在路徑中的所有人,沒有"圍繞單個元素

測試路徑= C:\ qt \ 4.6.3 \ bin; C:\ Program Files; C:\ documents&Settings


但是“始終”的解決方案有點復雜

EDIT:現在是一個有效的變體


@echo off

setlocal DisableDelayedExpansion

set "var=foo & bar;baz<>gak;"semi;colons;^&embedded";foo again!;throw (in) some (parentheses);"unmatched ;-)";(too"


set "var=%var:"=""%"

set "var=%var:^=^^%"

set "var=%var:&=^&%"

set "var=%var:|=^|%"

set "var=%var:<=^<%"

set "var=%var:>=^>%"


set "var=%var:;=^;^;%"

rem ** This is the key line, the missing quote is intended

set var=%var:""="%

set "var=%var:"=""%"


set "var=%var:;;="";""%"

set "var=%var:^;^;=;%"

set "var=%var:""="%"

set "var=%var:"=""%"

set "var=%var:"";""=";"%"

set "var=%var:"""="%"


setlocal EnableDelayedExpansion

for %%a in ("!var!") do (

    endlocal

    echo %%~a

    setlocal EnableDelayedExpansion

)

那我在那做什么?

我試圖解決主要問題:引號內的分號應該被忽略,只有正常的分號應該被替換為";"


我使用批量解釋器本身來解決這個問題。


首先,我必須使字符串安全,逃避所有特殊字符。

然后全部;被替換^;^;

然后技巧從線開始

set var=%var:"=""%"(缺少的引用是關鍵?。?/p>

這擴展的方式使得所有轉義字符都將丟失它們的轉義符號:

var=foo & bar;;baz<>gak;;"semi^;^;colons^;^;^&embedded";;foo again!;;... 

但僅在引號之外,所以現在引號;;和內部之間的分號之間存在差異^;^;。

這是關鍵。


查看完整回答
反對 回復 2019-08-06
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

一個簡單的襯墊,可以打印PATH環境變量:

ECHO.%PATH:;= & ECHO.%

如果你的PATH等于A;B;C上面的字符串替換將改變ECHO.A & ECHO.B & ECHO.C它并一次性執行它。完全停止可防止出現“ECHO is on”消息。


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 661 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號