【发布时间】:2017-02-20 14:26:35
【问题描述】:
如果我运行返回带有 & 或其他具有特殊含义的字符的东西,并且我尝试在脚本中使用它,我将如何转义它?
例如,如果我与同一台计算机上的某人共享一个本地帐户,并且我的用户名是 John & Matt。将批处理文件放入具有如下内容的桌面目录中:
@ECHO OFF
echo %~dp0
它会返回如下内容:
C:\Users\John
The system cannot find the path specified.
如果我尝试继续,那么从那时起整个脚本就会中断。 如果有人知道让整个路径出现的方法,我将不胜感激。
编辑:我之前没有充分澄清这一点。对于那个很抱歉。不太擅长解释,但如果我尝试在变量中使用 %~dp0 并在其上堆叠更多内容,则类似于
SETLOCAL
set loc=%~dp0
rename "%~dp0Dir\Dir1\Dir2\File.txt" "Something.txt"
如果我在声明一个变量来解决这个问题时加上另一组引号,可能会混淆重命名命令。
我尝试创建的批处理文件基本上删除了批处理文件所在的文件,将其替换为批处理文件所在目录内的子文件夹中的另一个文件,并将其重命名为其他文件。
【问题讨论】:
-
我不明白您的编辑。为什么将
loc设置为%~dp0?在这种情况下,您可以将%CD%设置为%~dp0并使用Ren Dir\Dir1\Dir2\File.txt" "Something.txt"。 -
我是创建批处理文件的新手,所以我不知道 %CD% 做了这样的事情。当我尝试创建一个新的批处理文件时,我会记住这一点。
-
使用此语法:
set "loc=%~dp0"-- 引号不会成为此处值的一部分,但某些特殊字符(如&)对cmd正确隐藏...
标签: batch-file cmd