批量变量赋值

2024-03-11

这个问题似乎(非常)愚蠢,我无法处理它:(

当我尝试这个批处理代码时:

if "%1" == "-i" (
set is = %2
echo. %is%
shift
)

使用 2 个(或更多)参数调用,它不起作用。它实际上打印出一个空白。 “shift”命令也没有完成。当我观看执行的代码(开头没有@echo off)时,我可以看到“set”命令已完成。

它出什么问题了?

调用示例:

c:\script.bat -i test -d bla

你有两个问题。默认情况下,括号中的语句组将同时完成变量扩展,即在您之前set命令。还有语义set是错误的,你不希望周围有空格=.

将其添加到文件的顶部:

setlocal ENABLEDELAYEDEXPANSION

并删除周围的空格= in set:

set is=%2

最后使用延迟扩展:

echo. !is!

可能的第三个问题是您可能需要两个SHIFTs,一个用于-i,其中一个是is争论。

Update

感谢 @dbenham 指出这不是语法错误set,这只是令人惊讶的行为,值得稍微解释一下。如果执行这些命令:

set a=one
echo "%a%"

结果是:

"one"

这是有道理的,但请尝试:

set b = two
echo "%b%"

你得到:

"%b%"

什么?这就是您在环境变量时所期望的b未设置。但我们just设置它。或者我们是否:

echo "%b %"

显示:

" two"

对于 Windowsset命令,与我所知道的任何其他语言或环境不同,空格很重要。前面的空格=成为环境变量名称的一部分,后面的空格成为值的一部分。这种不常见的行为是编写 Windows 批处理程序时常见的错误来源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量变量赋值 的相关文章

  • 查看所有定义的变量

    我目前正在 python shell 中进行计算 我想要的是 Matlab 风格的列表 您可以在其中看到已定义的所有变量 这样我就知道我使用了哪些名称 它们的值等 有办法吗 我该怎么做 您可以使用一些东西 dir 将为您提供范围内变量的列表
  • 如何在 Dart 中打印美元符号 $

    我实际上需要在 Dart 中在变量之前打印一个美元符号 例如 void main int dollars 42 print I have dollars I have 42 我希望输出为 我有 42 美元 我怎样才能做到这一点 谢谢 飞镖弦
  • Bigquery:如何声明数组变量并使用 select 语句设置数据?

    我试图在 BigQuery 上声明一个数组变量 但无法在变量中放入 SQL 语句 我找不到任何与此相关的主题 我想将表的所有列名放入变量中 所以我尝试了以下方法 DECLARE my array ARRAY
  • Windows批处理支持异常处理吗?

    Windows批处理编程支持异常处理吗 如果没有 是否有任何方法可以有效地模拟批处理文件中的异常处理 我希望能够在批处理脚本中的任何 CALL 级别的任何位置 抛出异常 并重复弹出 CALL 堆栈 直到找到活动的 TRY 块 然后 CATC
  • 我们可以使用 python 变量来保存整个文件吗?

    假设我们知道所有文件都将被加载到内存中并且我们负担得起 在 python 变量中加载整个文件 可能是二进制文件 有哪些缺点 如果有 或限制 如果有 如果这在技术上是可行的 是否应该避免这种情况 为什么 关于文件大小问题 该解决方案的最大大小
  • html 表单发布到 Flex 应用程序

    我有一个基本完成的 Flex 应用程序 它使用 Zend AMF 来连接 提供数据 我的应用程序确实有一个登录屏幕 看起来工作正常 现在我想在我的网站上添加另一个登录表单 允 许用户输入用户名 密码 提交表单时应将数据传递给 Flex 应用
  • 需要帮助通过批处理文件添加注册表项

    我正在尝试通过cmd添加以下注册表项 我无法让其他用户能够使用以下命令添加此注册表项regedit exe s Location Project reg HKEY CURRENT USER Software Autodesk Fabrica
  • 批处理 - 默认浏览器?

    有没有办法使用批处理文件查找我的计算机上的默认浏览器 只需使用 启动 www google com See here http social msdn microsoft com Forums is iewebdevelopment thr
  • C 编程:正向变量参数列表

    我正在尝试编写一个函数 它接受可变数量的参数 如 printf 执行一些操作 然后将变量列表传递给 printf 我不知道如何做到这一点 因为它似乎必须将它们推入堆栈 大约是这样的 http pastie org 694844 http p
  • 任务中的 ConEmu 命令

    我试图在 ConEmu 中获取一个任务来打开多个控制台 并在每个控制台打开时运行一个类似批处理的脚本 例如 打开 Git Bash 将控制台命名为 X 将当前目录设置为 Y 打开另一个 Git Bash 并运行一组命令 例如 cd A B
  • python 中未定义变量

    你好 我对 python 编程很陌生 我正在开始我的第一个程序 但我遇到了一些麻烦 有没有更好的方法来执行下面的代码片段 当我运行该程序时 我得到 yes no 未定义 def main print n Welcome to registr
  • 午夜后时间设置不正确

    我使用以下命令以更易读的格式获取当前日期 时间 set day date 4 2 set mth date 7 2 set yr date 10 4 set hur time 0 2 set min time 3 2 set bdate d
  • 仅当存在较新的文件时才删除文件的 Bat 文件

    我们的备份系统每天都会创建 bak 文件 如果遇到问题 我们可以使用该文件来恢复文件 如果不管这些 它们会填满我们的存储空间 所以我找到了一个批处理文件 我可以在创建新批处理文件后每天运行该文件来删除旧的批处理文件 forfiles p c
  • 检查多个变量java中的替换空值

    我试图找到一种简单的方法来在 Java 中的多个变量中执行多个 null 检查 替换 我有一个包含大约 20 个字符串变量的对象 在构造函数中 我想检查是否有任何变量值为空 如果它们为空 我想用空字符串替换它们 我可以执行一系列 if 语句
  • 如何在 JavaScript 中检查未定义的变量

    我想检查变量是否已定义 例如 以下内容会引发未定义的错误 alert x 我怎样才能捕获这个错误 在 JavaScript 中 null是一个对象 不存在的事物还有另一种价值 undefined DOM 返回null对于几乎所有无法在文档中
  • 已安装全局 NPM 包但未找到命令

    我已经全局安装了两个 npm 包 下载 https www npmjs com package download and 谜虚拟盒 https www npmjs com package enigmavirtualbox通过命令行 npm
  • 使用 Sphinx 时,如何记录没有文档字符串的成员?

    我正在为我发布的包编写文档 我发现您的文档越全面 人们就越容易找到您的包来使用 废话 实际上 我在充满爱心地编写代码的所有功能和细节方面获得了很多乐趣 然而 我对如何为类级变量编写与 Sphinx 兼容的文档感到完全困惑 特别是 我有一些e
  • 在 Swift 中将动态 Int 变量从一个类传递到另一个类

    我是 swift 2 的新手 我陷入了将变量从一个类传递到另一个类的过程中 我有一个类 GameScene 我有一个公共变量score并且在更新功能中不断更新 我想发送score两个节点相互碰撞时的值 一旦它发生碰撞 我就会使用 mainv
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 使用 for /f 查找并替换字符串为 if 语句和变量

    我编写了一个批处理文件 我想用另一个 txt 文件中的字符串覆盖关键字符串 目前 它完美地复制新的 File txt 文件 但不会用 OldFile txt 文件中的字符串替换字符串 File txt 文件中的字符串示例 密码 Pword

随机推荐

  • 在Java中写long和double不是原子的?

    单个变量的读写是原子的 语言保证 除非该变量是 long 或 double 类型 我正在阅读一门课程的幻灯片 发现上面写着 这门课是关于并发的 谁能向我解释为什么写 long 或 double 不是原子操作 这着实让我大吃一惊 它不是原子的
  • SplashScreen java 更改 alpha

    我正在循环遍历一些 png 来为 java 启动画面创建动画 我用这个开始动画 java splash images anim png SplashDemo 并在类中使用 png 您可以在这里找到该课程 http pastebin com
  • 使用 javascript 设置隐藏字段的值,然后从服务器端 C# 代码访问值

    我正在使用一个嵌套的 html 无序列表 样式为下拉列表 当单击内部列表列表项中的 a 标记时 它会触发一些 JavaScript 该 JavaScript 应该将隐藏字段的值设置为所单击链接的文本 javascript 似乎可以工作 我使
  • 在没有 Spring Security 的情况下保留 Spring 会话

    我正在寻求帮助来配置 Spring Boot 以在不使用 Spring Security 的情况下保留 Spring 会话 我从HttpSession JDBC Spring Boot 示例应用程序 https github com spr
  • 在 SQL Server 中,如何使用系统表/视图识别特定表的*所有*依赖关系?

    我正在编写一个 DDL 脚本来删除多个表 但需要首先确定这些表的所有依赖项 这些依赖项包括外键约束 存储过程 视图等 最好 我想在删除依赖表之前使用系统表 视图以编程方式编写脚本来删除这些依赖项 从头开始编写这非常混乱 您是否考虑过像这样的
  • 枚举值“”对于类型>“EnumType”无效并且无法序列化

    当使用 DataContractSerializer 编写具有如下成员的 DataContract 时 DataMember public PropertyId PropId get set 它报告序列化错误 SerializationEx
  • Angular2 是否有相当于 $document 的东西

    我已经开始研究 Angular2 并拥有 3 个嵌套组件的基本功能 但是我无法弄清楚如何将按键处理程序添加到文档中 如果没有 我将如何监听文档上的按键并做出反应 需要明确的是 我需要响应文档本身的 kepyress 而不是输入 在 Angu
  • Bootstrap 侧边栏滚动、附加和滚动监视

    NEWER 所以滚动现在正在工作 但它固定在页面顶部 我需要它位于正确的位置 内容旁边 然后开始在内容的当前位置滚动 我正在尝试让我的侧边栏像这里一样滚动 gt http getbootstrap com 2 3 2 components
  • 为什么 JavaScript 中的数组显示错误长度

    我正在学习 JavaScript 作为学习的一部分 我遇到了以下场景 我期望 a1 length 代码的最后一行 显示 201 但它显示 101 有什么想法吗 var a1 new Array for var i 100 i lt 100
  • NativeScript:如何禁用 WebView 中的缩放控件?

    我从以下问题中找到了在 Android WebView 中启用 禁用缩放控件的方法 如何删除Android webview上的缩放按钮 https stackoverflow com questions 10766669 how to re
  • 在 R/igraph 中可视化具有 3 层(三方)的图/网络

    我有一个 分层 网络 有 3 层 比如说父母 P 孩子 C 孙子 G 边缘总是指向年轻一代 专利 gt 子代 子代 gt 孙子或父代 gt 孙子 同一代中的顶点之间没有边 该图由 3 个边列表 P C C G P C 表示 下面给出一个简短
  • 无法在 gdal 中加载“gcs.csv”文件

    这个问题可能会重复 但我没有得到答案 我已经在 python ide 中编写了流动代码 out srs osr SpatialReference self out srs ImportFromEPSG 4326 它运行良好 但是当我从应用程
  • Corda:在一个流程中创建和使用相同的状态?

    是否可以在一个流中创建和使用相同的 corda 状态 或者在不同的子流中创建和使用它 我收到以下错误 Caused by net corda core flows NotaryException Unable to notarise tra
  • 在jquery中获取ruby值[重复]

    这个问题在这里已经有答案了 我有一个文本区域 在其中填充数据库记录 我想在 jquery 的 textarea 中访问相同的值
  • xml序列化c#

    无法理解我做错了什么 结果集是空的 我的代码 class Class1 public static object DeSerialize object resultObject XmlSerializer serializer new Xm
  • Android 推送通知状态检查

    用户可以在更高版本的 Android 中为应用程序禁用推送通知 应用程序有什么方法可以知道用户在设置中禁用了推送通知 看这里 http developer android com google gcm adv html unreg http
  • 如何在两个 docker 容器之间进行 nginx 反向代理负载平衡?

    我尝试使用相同的 Nodejs 应用程序在两个容器之间建立 nginx 反向代理负载平衡 目录结构 docker compose yml nginx nodejs index js php docker compose yml versio
  • Angular 2 - 将文件发布到 Web API

    我试图从 Angular 2 应用程序将文件传递到 Web API 但实际的文件数据未发送 这是我的 Angular 2 服务代码 var headers new Headers headers append Content Type mu
  • OpenFileDialog() 锁定文件夹

    I use OpenFileDialog 在我的 Silverlight 应用程序中 当我使用选择文件时ShowDialog 它只是锁定文件 直到我关闭我的应用程序 应用程序运行时我无法重命名或删除文件夹 浏览器中的 silverlight
  • 批量变量赋值

    这个问题似乎 非常 愚蠢 我无法处理它 当我尝试这个批处理代码时 if 1 i set is 2 echo is shift 使用 2 个 或更多 参数调用 它不起作用 它实际上打印出一个空白 shift 命令也没有完成 当我观看执行的代码