gpt4 book ai didi

windows-7 - 在cmd中,如何获取名称中带有插入符号的文件夹路径

转载 作者:行者123 更新时间:2023-12-02 17:47:33 25 4
gpt4 key购买 nike

在 Windows 7 的 cmd 中,我了解到 %~dp0 给出了批处理文件的文件夹路径,如 How to get folder path from file path with CMD

但是,如果路径中至少有一个插入符 (^),则它不起作用。例如 C:\one^two^^three^^^four^^^^carets\中的一个批处理包含

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 不带引号的值,你可以使用延迟扩展。这是有效的,因为在解析特殊字符后会发生延迟扩展:

@echo off
setlocal enableDelayedExpansion
set "myPath=%~dp0"
echo !myPath!

您也可以通过将值传递给 FOR 变量来获得相同的结果。 FOR 变量的扩展也发生在特殊字符解析之后:

@echo off
for %%A in ("%~dp0") do echo %%~A

关于windows-7 - 在cmd中,如何获取名称中带有插入符号的文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12817852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com