1

私は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?

問題は、環境で使用できるにもかかわらずパイプラインで使用できない理由と、varvar を「手動で」設定すると何が変更されるかということですset var=C:\\\somedir\\\ & call echo %var%。 .

4

1 に答える 1

2

この場合、実際には var をc:\\\somedir\\\<whitespace> Yes に設定しています。cmd は、変数の設定に関してあまりスマートではありません。

後者の例では、おそらく "\" にたどり着いたらすぐに Enter を押します。確かに - () を使用してください:

(SET VAR=c:\\\windows\\\) & echo %VAR%
:: Test for trailing space...
echo [%VAR%]
于 2013-02-12T20:53:16.800 に答える