batch-file – 用于循环的DOS批处理文件中的变量赋值问题
发布时间:2020-12-14 02:09:03 所属栏目:Windows 来源:网络整理
导读:我在DOS脚本中有一个变量赋值问题for循环.它永远不会分配价值,它总是空白.下面是示例代码 @echo offset ans=%1SET STRING=%ans:"=%echo Parsing the string "%STRING%":for /f "tokens=1-2" %%a in ("%STRING%") do ( set Word1 =%%a echo Word 1: %%a echo
我在DOS脚本中有一个变量赋值问题for循环.它永远不会分配价值,它总是空白.下面是示例代码
@echo off set ans=%1 SET STRING=%ans:"=% echo Parsing the string "%STRING%": for /f "tokens=1-2" %%a in ("%STRING%") do ( set Word1 =%%a echo Word 1: %%a echo Word 1: %Word1% set Word2 =%%b if %%b.==. (Set server =.pipemssql$microsoft##sseesqlquery ) else (Set server =%%b) ) echo Server name "%server%" sqlcmd -s %server% %% a的值未分配给变量Word1.但当我回显%% a时,它会显示正确的值.在最后一个空值检查是否条件,服务器变量永远不会设置.我在这里很困惑.有人可以帮我吗?? P.S:脚本的输入是任何2个字符串(例如:a.bat“l dev-server”) 解决方法
你需要使用延迟扩展 – !Word1!而不是%Word1%.
默认情况下,当shell首次读取语句时,所有变量都将替换为其当前值,并且每次命中该行时都会使用modified语句.这就是DOS的工作原理,它在Windows shell中保持这种方式以实现向后兼容. 另一方面,延迟扩展在每次语句被命中时重新插入值.这将给你想要的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 从服务器入手防止.mdb文件被下载的方法
- windows-server-2008 – 从不属于域成员的Windows主机查询P
- WiX获得文化预处理器变量
- windows-server-2008-r2 – 长达一小时的关机时间“关闭hyp
- 通过Windows资源管理器连接到SDL Tridion WebDAV(Windows 2
- 在我的DLL中的Delphi中,我必须分配一个函数的return pchar
- windows-server-2008 – 什么是只读域控制器实际上有用?
- windows – 需要XP管理员权限的旧应用程序
- .NET:加载同一DLL的两个版本
- windows server2008 IIS下目录 [ application/database.php
推荐文章
站长推荐
- windows – 如何获取远程计算机的MAC地址
- WIX MSI具有启动条件来预先安装IIS,在WS2008上失
- 如何重新加载Windows窗体而不使用VB.NET关闭它?
- windows-phone-8 – 如何更改起始页?
- windows-server-2008 – 如何在服务器上安装.net
- 如何在Windows上使用JNA操作Java内存
- windows-server-2003 – 将Windows 7 64位打印驱
- windows-server-2008 – 通过HTTP的MSMQ – 为什
- 在Windows中创建一个带有C dll的r包并确保可移植
- windows – 如何在node.js上杀死一个打开的进程?
热点阅读