具有特殊字符的批处理文件连接

时间:2013-06-20 03:43:39

标签: batch-file special-characters concatenation dos

我需要在DOS Batch文件中创建一个字符串变量,以包含以下内容:“Server1 \ StoreDB”

我的StoreDB来自对数据库的查询,所以目前,我的脚本如下所示:

set Instance=%1
set path1="Server1\"
set "CompletePath=%path1%%Instance%"

但这不会返回“Server1 \ StoreDB”。它只返回“StoreDB”

请稍微帮忙吗?我是这些DOS命令的新手。谢谢。

2 个答案:

答案 0 :(得分:2)

引号存在问题/潜在问题。 使用%~1而不是%1来删除潜在的引号。 第二行中的引号放置不正确。

set Instance=%~1
set "path1=Server1\"

答案 1 :(得分:2)

我怀疑你已经解释了你的代码,你展示的一些行实际上是括号或连接命令中较大构造的一部分。

在解析行时展开

%var%,并且一次解析带括号的代码块。如果在同一代码块中设置和扩展变量,则扩展值是在解析代码块之前存在的值。

解决方案是使用延迟展开!var!,必须使用SETLOCAL EnableDelayedExpansion启用。

@echo off
setlocal enableDelayedExpansion
set "var=original"
(
  set "var=new"
  echo %%var%% in block = %var%
  echo ^^!var^^! in block = !var!
)
echo %%var%% after block = %var%
echo ^^!var^^! after block = !var!

- 输出 -

%var% in block = original
!var! in block = new
%var% after block = new
!var! after block = new