我需要在我的 DOS 批处理文件中创建一个字符串变量以包含以下内容:“Server1\StoreDB”
我的 StoreDB 来自对数据库的查询,所以目前,我的脚本如下所示:
set Instance=%1
set path1="Server1\"
set "CompletePath=%path1%%Instance%"
但这不会返回“Server1\StoreDB”。它只返回“StoreDB”
请问这里有一点帮助吗?我是这些 DOS 命令的新手。谢谢你。
我需要在我的 DOS 批处理文件中创建一个字符串变量以包含以下内容:“Server1\StoreDB”
我的 StoreDB 来自对数据库的查询,所以目前,我的脚本如下所示:
set Instance=%1
set path1="Server1\"
set "CompletePath=%path1%%Instance%"
但这不会返回“Server1\StoreDB”。它只返回“StoreDB”
请问这里有一点帮助吗?我是这些 DOS 命令的新手。谢谢你。
您对报价有问题/潜在问题。使用 %~1 而不是 %1 来删除潜在的引号。第二行中引号的位置不正确。
set Instance=%~1
set "path1=Server1\"
我怀疑您已经解释了您的代码,并且您显示的某些行实际上是括号或连接命令内的更大构造的一部分。
%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