为了账号安全,请及时绑定邮箱和手机立即绑定

'漂亮打印'窗口%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条经验 获得超4个赞

简单的方法是使用


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:"=""%"(缺少的引用是关键!)。

这扩展的方式使得所有转义字符都将丢失它们的转义符号:

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 关注
  • 587 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信