批处理 - 将参数设置为变量而不解析参数内的最终变量

时间:2014-01-15 21:35:27

标签: batch-file cmd command-line-arguments

我正试图找到一种方法来解决我遇到的问题。我用简短的脚本模拟了我的问题,因此不必读取长代码。

基本上我想要/需要实现的是使用参数启动我的批处理并使用与脚本用户定义的相同的方式处理参数,但是使用转义字符替换百分号后跟百分号(%> ^% )。但是如果参数包含一些现有的变量,比如%date%

,就会出现问题

以下是我的代码的简短版本:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set "x=%~1"
set "y=!x:%%=^^%%!"
echo %y%

参数可以包含任何内容,但也可以如下所示:

script.bat "this should be just plain text - %date%"

批处理脚本的预期输出如下:

this should be just plain text - ^%date^%

然而,似乎变量立即被解决,虽然百分号甚至没有被转义,因为它找不到任何。如果参数不包含任何变量,它运行良好,但这种输出方式如下:

this should be just text - Wed 01/15/2014

我正在尝试避免任何其他脚本语言使用(如VBS)和任何其他应用程序的使用,而是将采用VBS方式,例如比没有。 任何帮助,帮助或暗示如何实现这一点将非常感激。

1 个答案:

答案 0 :(得分:0)

在您致电%date%后,script.bat变量正在展开 - 因此,在您的脚本中%1已经拥有展开的%date%变量。调用脚本时必须添加插入符号 -

script.bat "this should be just plain text - ^%date^%"