插入符在Windows 7中的CMD,我的理解是%〜DP0给出了一个批处理文件的文件夹路径,如 How to get folder path from file path with CMD在cmd中,如何让文件夹的路径与名称
然而,这不是如果路径中至少有一个插入符号(^),则不起作用。例如,在C批:\ ^一个^^ 2个^^^ 3 ^^^^ 4插入符\含
echo %~dp0
给出
C:\onetwo^three^four^^carets\
我怎样才能逃避插入记号?
插入符在Windows 7中的CMD,我的理解是%〜DP0给出了一个批处理文件的文件夹路径,如 How to get folder path from file path with CMD在cmd中,如何让文件夹的路径与名称
然而,这不是如果路径中至少有一个插入符号(^),则不起作用。例如,在C批:\ ^一个^^ 2个^^^ 3 ^^^^ 4插入符\含
echo %~dp0
给出
C:\onetwo^three^four^^carets\
我怎样才能逃避插入记号?
你得到正确的值,但它要经过解析的另一层当你回显值兼容。未加引号的^
是批转义字符,用于将特殊字符如&
和|
转化为简单的文字字符。无论任何性格跟随一个不加引号的脱字符都逃脱了,并且脱掉了字符。
你会得到完全相同的结果,如果你要简单地echo字符串文字:
echo C:\one^two^^three^^^four^^^^carets\
产量
C:\onetwo^three^four^^carets\
您可以通过引用串保护插入记号,但你得到您的ECHO结果中的报价为:
echo "%~dp0"
您可以轻松地将原件值的环境变量,而无需耗费插入符号,并通过使用SET来看看结果证明这一点:
@echo off
setlocal
set "myPath=%~dp0"
set myPath
如果你想呼应只是不带引号的值,你可以使用延迟扩展。这工作,因为延迟扩展的特殊字符解析后发生:
@echo off
setlocal enableDelayedExpansion
set "myPath=%~dp0"
echo !myPath!
您还可以通过价值转移到FOR变量得到同样的结果。对于变量扩招后特殊字符的解析也发生:
@echo off
for %%A in ("%~dp0") do echo %%~A
你试过延时变量扩展吗?
echo !dp0
我不知道如果它与报价剥离〜
+1好的选项列表 –
+1的详细解释和例子。 “echo!myPath!”解决方案正确。其他的都用引号将字符串括起来。 – Gnubie
@Gnubie - 哎呀,谢谢!我最后一个例子中的'〜'错过了引号。现在全部修好了。 – dbenham