我需要在DOS Batch文件中创建一个字符串变量,以包含以下内容:“Server1 \ StoreDB”
我的StoreDB来自对数据库的查询,所以目前,我的脚本如下所示:
set Instance=%1
set path1="Server1\"
set "CompletePath=%path1%%Instance%"
但这不会返回“Server1 \ StoreDB”。它只返回“StoreDB”
请稍微帮忙吗?我是这些DOS命令的新手。谢谢。
答案 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