批处理文件:在for循环中转义问号

2023-12-01

这个 for 循环(简化的最小示例);

@echo off
for %%a in (help -help --help /help ? /?) do ( 
   echo %%a 
)

用 '?' 扼住 2 个元素特点。它输出

C:\Temp>test.bat
help
-help
--help
/help

C:\Temp>

因此,当它遇到第一个“?”时,它就会退出循环。

该集合的正确转义序列是什么?尝试了很多东西,双引号,插入符,反斜杠等等,但似乎没有任何效果。


另一种选择是在 FOR /F 字符串中使用换行符。 FOR /F 会将每一行视为一个独立的字符串。下面我展示了做同样事情的四种方法。

@echo off
setlocal enableDelayedExpansion

:: Define LF to contain a linefeed character
set ^"LF=^

^" The above empty line is critical. DO NOT REMOVE

:: Option 1
:: Embed linefeeds directly in the string literal
for /f %%A in ("help!LF!-help!LF!--help!LF!/help!LF!?!LF!/?") do (
  echo(%%A
)


echo(
:: Option 2
:: Define a variable with spaces and use search and replace
:: to substitue linefeeds
set "help=help -help --help /help ? /?"
for %%L in ("!LF!") do for /f %%A in ("!help: =%%~L!") do (
  echo(%%A
)


echo(
:: Option 3
:: Embed linefeed directly in string without LF variable
for /f %%A in (^"help^

-help^

--help^

/help^

?^

/?^") do (
  echo(%%A
)


echo(
:: Option 4
:: Embed linefeed directly in search and replace without LF variable
for /f %%A in (^"!help:^ ^=^

!^") do (
  echo(%%A
)

我更喜欢选项 2。我发现它最容易阅读,但仍然很紧凑。

请注意,MC ND 和我都使用echo(%%A。这是为了防止echo /?显示 ECHO 命令的帮助。

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

批处理文件:在for循环中转义问号 的相关文章

随机推荐

  • 清单合并失败:Android Studio

    我不确定出了什么问题 我用谷歌搜索了一下 虽然这是关于匹配 sdk 版本的 它们的作用相同 如下 构建 gradle android compileSdkVersion 17 buildToolsVersion 19 0 1 default
  • 在MySQL中获取一个人的年龄

    我怎样才能在mysql中获得一个人的年龄 想象一下我有一张桌子member id member month member year现在我需要获取会员的年龄Months Say member month 1 and member year 2
  • 尝试捕获信号量的正确方法

    将信号量操作包装在 try catch 块中的正确方法是什么 如果获取操作在获取一定数量 但不是全部 请求的许可后被中断 会发生什么情况 你怎么知道要再次释放多少个 发布是否应该在 最终 块中进行 但是如果操作被中断 您是否可能会发布未获得
  • 使用变量时在 Excel 中通过 VBA 设置验证失败

    我正在尝试使用 VBA 设置一系列单元格的数据验证 我使用此代码收到运行时错误 1004 非常有用 应用程序定义或对象定义错误 With rngRangeToCheck Cells lrownum 1 Validation Delete A
  • 如何使用 Selenium ChromeDriver 和 Chrome 在自定义位置下载文件

    我想将 txt 和 pdf 文件下载到特定文件夹 但它只是将它们下载到另一个文件夹中 网站http demo automationtesting in FileDownload html 代码有问题还是我没有放置正确的文件夹位置 impor
  • 在 WooCommerce 中删除或隐藏“wc_add_notice”消息

    我用它来删除 WooCommerce 中的 购物车已更新 消息 add filter woocommerce add message return false 但仍显示 运费已更新 消息 我怎样才能删除这条消息 根据您的具体情况 在短代码
  • UITableView 的问题:继续收到此运行时错误无法识别的选择器

    我有这个错误 它阻碍了我前进 我基本上有一个应用程序 其中包含一个指向各个 UIViewController 的 UITabViewController 所以其中一个选项卡 我想实现一个基本的 TableViewController 现在
  • 用于运行 VSCode 扩展的自定义节点版本

    我正在制作一个 vscode 扩展供我个人使用 我真的很想使用更新的节点版本 但是 我不确定 VSCode 如何选择要使用的节点版本 我安装的唯一的node js是8 1 3 但是当我调试扩展时 我看到 VSCode 使用7 via pro
  • 在 yii 中使用 url 管理器将 url 更改为 seo 友好

    我如何将这些 URL 转换为 SEO 友好的 URL 我在 yii 中尝试了 Url manager 但没有得到正确的结果是否有关于 url manager 的好的教程 http localhost nbnd search city cit
  • 如何自动关闭PostgreSQL中的空闲连接?

    一些客户端连接到我们的 postgresql 数据库 但保持连接打开 是否可以告诉 Postgresql 在一定时间不活动后关闭这些连接 TL DR 如果您使用的是 Postgresql 版本 gt 9 2然后使用我想出的解决方案 如果你不
  • ASP.NET WebForms + Postback 然后打开弹出窗口

    我有一个 LinkBut ton 它必须回发才能执行某些逻辑 完成后 我不想在浏览器中加载页面 而是想保留它并弹出一个新窗口 到目前为止 我最好的想法是将 LinkBut ton 放入 UpdatePanel 中 并让它在重新加载时呈现一些
  • 使用 Gson 反序列化泛型集合

    我在使用 GSon 进行 json 反序列化时遇到一些困难 我希望有人可以帮助我 我想反序列化以下 json 片段 fieldA valueA myCollection AnotherClass objectAfieldA valueB o
  • 从 TCL 中的过程返回数组

    我想从过程中传递数组并返回数组 以下是我尝试的示例代码 但出现一些错误 set a 0 11 set a 1 10 set a 2 20 set a 3 30 set a 4 40 proc deleten somet upvar some
  • 如何使用批处理搜索和替换区分大小写的字符串

    我想搜索并替换区分大小写的字符串 就像如果我在文本文件中有rise Rise RISE 我只想替换字符串 rise 下面的代码是替换所有三个字符串 请帮助我 Echo on SETLOCAL ENABLEEXTENSIONS SETLOCA
  • Android:如何追踪 InflateException 的来源?

    启动我的应用程序时 我在 Logcat 中收到以下警告 04 09 10 28 17 830 WARN WindowManager 52 Exception when adding starting window 04 09 10 28 1
  • IP地址正则表达式Python

    我遇到正则表达式问题 我需要最有效的正则表达式 匹配 IP 地址且仅在 255 范围内 我试过这个 ip pattern d 1 3 d 1 3 d 1 3 d 1 3 但它确实匹配超过 255 的偶数 例如 321 222 11 4 这应
  • tsc 未被识别为内部或外部命令

    我在 Windows7 上使用节点版本 6 9 2 和 npm 版本 5 4 2 我已经使用命令安装了打字稿npm install typescript g 但是 当我使用命令运行演示文件时 tsc 我收到错误 tsc is not rec
  • 绕过浏览文件/上传文件对话框

    我正在构建一个供内部使用的 Chrome 扩展程序 第一步 用户可以上传文件 这是always同一个文件 我想跳过浏览对话框并直接为输入字段分配正确的值 该文件与插件代码分开 这可以通过 Javascript 实现 或者开发 Chrome
  • HTML5 缓存清单:将所有远程资源列入白名单?

    我正在制作一个包含博客的 iPhone 版桌面网站 该博客经常嵌入来自其他域的图像 显然 在这种情况下 图像 URL 始终以 http 开头 但由于我使用的是缓存清单 因此不会加载这些图像 因为它们未在清单文件 我有一个网络 白名单部分 其
  • 批处理文件:在for循环中转义问号

    这个 for 循环 简化的最小示例 echo off for a in help help help help do echo a 用 扼住 2 个元素特点 它输出 C Temp gt test bat help help help hel