如何将空格分隔的变量传递到bat 文件中?

2024-01-07

我想将一个空格分隔的变量传递到批处理文件中,例如:

c:\applications\mi_pocess.bat A1 1AA

当我跑步时echo %1 in mi_process它返回A1

我将如何去认识它A1 1AA是一个单一的字符串?

我尝试过在外部软件中将其用双引号括起来,例如

c:\applications\mi_pocess.bat + chr$(34) + A1 1AA + Chr$(34)

and echo %1现在返回"A1 1AA"(我不想在变量中使用引号)


我相信你知道%1, %2.bat 中的 等表示在命令行上传递给 .bat 的编号参数。

如果您将它们用作%~1, %~2等等。如果存在的话,所有周围的引号都会被自动删除。

考虑一下这个space-in-args.bat供测试用:

@echo off
echo.  %1
echo.    (original first argument echo'd)
echo.
echo. "%1"
echo.    (original first argument with additional surrounding quotes)
echo.
echo.  %~1
echo.    (use %%~1 instead of %%1 to remove surrounding quotes, should there be)
echo.
echo. "%~1"
echo.    (we better use "%%~1" instead of "%%1" in this case:
echo.      1. ensure, that argument is quoted when used inside the batch;
echo.      2. avoid quote doubling should the user have already passed quotes.
echo.

Run it:

space-in-args.bat "a b c d e"

输出是:

 "a b c d e"
     (original first argument echo'd)

""a b c d e""
     (original first argument with additional surrounding quotes)

  a b c d e
     (using %~1 instead of %1 removes surrounding quotes, should there be some)

 "a b c d e"
     (we better use "%~1" instead of "%1" in this case:
       1. ensure, that argument is quoted when used inside the batch;
       2. avoid quote doubling should the user have already passed quotes.

也可以看看for /?(向下滚动到最后)了解更多这些转换。

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

如何将空格分隔的变量传递到bat 文件中? 的相关文章

  • 如何通过批处理脚本检查进程是否正在运行

    如何检查应用程序是否正在从批处理 以及 cmd 文件运行 如果程序已经在运行 我不需要启动另一个实例 我无法更改应用程序以使其仅作为单个实例 该应用程序还可以以任何用户身份运行 我想到的另一种可能性 不需要保存文件 灵感来自于使用grep
  • 批处理 - 将 dir 命令的输出存储到变量 - 目录列表中

    我需要将整个目录列表存储到一个变量中 然后将所述变量作为参数传递给另一个脚本 直接或首先将 dir 的输出存储到文本文件中 然后执行如下操作 dir path todir gt temp txt set p VAR
  • 有没有更有效的方法通过ffmpeg批量添加水印和加入视频?

    我有这个批处理文件 使用 ffmpeg 在我的视频中添加徽标 然后添加简介 但需要 10 小时到一天的时间 具体取决于我需要添加水印的数量 是否有更有效的方法来实现此目的 视频有时具有不同的分辨率 因此我无法删除到 1280 720 尺寸的
  • 从批处理文件中获取java版本

    如何获取java版本并希望从批处理文件中获取java版本中的 6 我尝试了下面的脚本 但没有成功 REM check java exists using JAVA HOME system variable if JAVA HOME ECHO
  • Windows Batch 帮助从命令输出设置变量[重复]

    这个问题在这里已经有答案了 我需要运行一个简单的 find 命令并将输出重定向到 Windows 批处理文件中的变量 我已经尝试过这个 set file ls find txt echo file 但这不起作用 如果我运行此命令 它可以正常
  • 如何使用 winrar 提取与 zip 文件同名的文件夹中的所有 zip 文件?

    我需要迭代一个文件夹 对于每个 zip 文件 我需要使用它的名称来提取它 也就是说 如果它是 test zip 那么它应该解压到 test 文件夹 同样 它应该迭代我的文件夹及其子文件夹并提取内容 我编写了下面的代码 但它没有使用 zip
  • 如何在批处理文件中解析带有特殊分隔符的文件?

    我想使用批处理来解析一个如下所示的文件 a string containing various characters and spaces 1 b string containing various characters and space
  • REG ADD - 语法无效

    我试图通过在批处理文件中使用以下代码行来修改注册表中的值 但当我在参数周围使用双引号时 我不断收到 错误 语法无效 而当我使用单引号时 我不断收到 无效的键名 REG ADD HKLM SOFTWARE Microsoft Windows
  • 我应该如何传递密码(包含特殊字符)作为命令行参数?

    我有一个部署脚本 必须将 LDAP 密码作为命令参数传递给该脚本 实际密码 foo ser ver 1 包含三个空格字符 开头 之前1 之后1 e g bin gt deployment bat LDAPPassword foo ser v
  • 批处理:将文件移动到名称第一个字母的文件夹?

    我想要 3 个文件夹 A G H T 和 U Z 我希望文件能够根据名称的第一个字母通过批处理自动分类到这些文件夹中 有办法做到这一点吗 谢谢你 ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET so
  • 最后一个参数中的正斜杠会导致批处理文件目录(“%~dp0”)的路径发生更改

    我正在学习如何在批处理脚本中使用参数 并最终创建了某种用于读取参数和设置参数的模板 echo off SetLocal EnableDelayedExpansion set needextra set errstat set noflag
  • 使用脚本查找字符串长度的奇怪结果?

    我正在测试 unmeat 提交的这段代码这个问题 https stackoverflow com questions 21817684 batch get string length with special characters 肉叔叔引
  • 2 批字符串问题

    1 是否有任何内置函数可以告诉我变量的内容是否仅包含大写字母 2 有没有办法查看变量是否包含字符串 例如 我想查看变量 PATH 是否包含 Ruby 对于第 1 部分 findstr就是答案 您只需使用正则表达式功能即可errorlevel
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 使用批处理文件创建 exe 的快捷方式

    我知道这样的主题已经存在 但我不想使用 VB 脚本 我希望你能在 DOS 中使用命令行创建快捷方式 请发布一些很棒的例子 Thanks AA 如果不调用外部程序 则无法在 bat 文件中创建快捷方式 然而 自 Win2k 以来的每个版本的
  • 批处理文件进度旋转轮

    我已经尝试了好几天了 似乎可以让它发挥作用 我找到了一个例子 但它使用了 CryEcho 但它不起作用 我只是想添加这个 让用户知道在 ping IP 地址时发生了什么事 我确实在这里找到了一些代码 但这让我感到困惑 因为我刚刚开始为了好玩
  • 使用 ICACLS 将文件权限设置为“只读”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我很难从简单 直观的方式转变过来chmod 400尝试在 Windows 命令提示符中执行相同的操作ICACLS 与 UNIX LINUX
  • 如何删除批处理文件中的新行?

    我正在处理批处理文件并导出到文本文件 看起来一切都很好 但是当我打开文本文件时 许多新行中断 所以 我想删除它们 echo OFF setlocal EnableDelayedExpansion systeminfo findstr c H
  • 如何在 Windows 路径中使用卷标?

    我想使用批处理文件从可移动驱动器复制文件 无论它获得的驱动器号是什么 到目前为止 还没有去 似乎没有任何现成的命令或第三方命令行工具可以处理基于卷标签的路径 我尝试了 FreeFileSync 但它可以大批量工作 并且我在这里需要精确的文件

随机推荐