带引号的批处理路径

6
如何检查路径是否有引号,如果没有则添加?我知道我可以做出这样的东西:
set /p path="My path "
"%path%"

但是我遇到了引号的问题

C:\My folder --> "%path%" --> "C:\My folder" --> Good

如果用户输入带引号的路径
"C:\My folder" --> "%path%" --> ""C:\My folder"" --> Wrong

我不能使用双引号,因为我调用的外部命令行不起作用并给我错误。那么如果路径中没有双引号,我该如何添加?谢谢。

4个回答

6

在使用之前可以去掉引号,试试:

set path=%path:"=%

path没有引号了。

示例:

@echo off

set path="a b c"

set path=%path:"=%

echo %path%

输出

a b c

1

由于我正在使用手机进行写作,因此无法测试此内容,但您可以假设存在双引号并执行查找和替换操作:

set path=%path:""="%

1
  for /f "delims=" %%i in ("%var%") do set "var=%%~i"
  echo %var%

在for循环后,%var%没有双引号。

顺便说一下:不应将cmd命令用作批处理变量(PATH)。


1

去掉所有引号,然后在它周围添加引号:

set path=^"%path:"=%^"

插入符号(^)用于转义引号的特殊含义,因此set命令将把它们包含在变量中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接