在CMD中转义输出

时间:2017-02-20 14:26:35

标签: batch-file cmd

如果我运行带有&或者其他一些具有特殊含义的角色,我尝试在脚本中使用它,我该如何逃避呢?

例如,如果我与同一台计算机上的某个人共享本地帐户,并且我的用户名为John&马特。将批处理文件放在Desktop目录中,如下所示:

@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"

如果我在声明变量来修复该问题时添加另一组引号,则可能会混淆重命名命令。

我尝试创建的批处理文件基本上删除了批处理文件所在的文件,将其替换为位于批处理文件所在目录内的子文件夹中的另一个文件,并将其重命名为其他文件。

2 个答案:

答案 0 :(得分:2)

如果您想要在不附上引号的情况下可靠地ECHO值,那么您可以使用以下任一策略:

test payload

答案 1 :(得分:0)

@ECHO OFF
echo %dp0

将返回 dp0 - 我想你的意思是%~dp0; - )

但是,echo "%~dp0"会输出C:\Users\John & Matt\...

顺便说一句,它是 \而不是/

Windows:\

Unix / Linux:/

我没有迂腐,这有时会导致严重的问题(例如here)。