【问题标题】:cmd environment variable behaviour unclearcmd环境变量行为不清楚
【发布时间】:2013-02-12 20:20:31
【问题描述】:

我在使用 cmd.exe 时遇到了一些困难,所以让我将其放入代码中:

           :: Set an environment variable var to `pwd` 
           :: (forget about the backslashes)
C:\somedir>set var=C:\\\somedir\\\ & call echo %var%
C:\\\somedir\\\    

           :: great! works.
           :: Is the environment variable really there?
C:\somedir>set v
var=C:\\\somedir\\\    

           :: yes. ok.
           :: Traverse directory recursively, find class files ending with T, 
           :: delete `pwd` from filenames:
C:\somedir>dir /s /b *T.class | grep T\. | sed 's/%var%//g'
C:\somedir\domain\test\ClassT.class  

           :: uh oh no! Didn't work.
           :: Wait a minute. Is the environment variable really there?
C:\somedir>set v
var=C:\\\somedir\\\                 

           :: hmm...yes, indeed?
           :: ok. Take a breath. Start over. Empty/Delete var.
C:\somedir>set var=

           :: Manually fill var
C:\somedir>set var=C:\\\somedir\\\

           :: Try again...
C:\somedir>dir /s /b *T.class | grep T\. | sed 's/%var%//g'
domain\test\ClassT.class         

           ::YES! uh...oh...no...w**hy does it not work above?

问题是,为什么我不能在管道中使用 var 尽管它在环境中可用,并且当我设置 var “手动”而不是 set var=C:\\\somedir\\\ & call echo %var% 时发生了什么变化,即第一部分完全合法的手册,如清单后面所示。

【问题讨论】:

    标签: windows command-line call environment-variables cmd


    【解决方案1】:

    在这种情况下,您实际上将 var 设置为 c:\\\somedir\\\<whitespace> 是的,cmd 在设置变量方面并不是很聪明。

    在后一个示例中,您可能一进入“\”就按回车。 可以肯定的是 - 使用 ():

    (SET VAR=c:\\\windows\\\) & echo %VAR%
    :: Test for trailing space...
    echo [%VAR%]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 2016-04-17
      • 2014-05-29
      • 2020-02-13
      • 2021-03-26
      相关资源
      最近更新 更多