批处理文件创建另一个批处理文件,如何在写入行时忽略命令?

2024-02-14

我正在编写的 Windows 批处理文件遇到了一些问题。

我需要批处理文件将一些特定行写入另一个批处理文件,我一直使用的方法是:

type NUL > batchfile.bat
ECHO texttobewrittentofile >> batchfile.bat
ECHO texttobewrittentofile >> batchfile.bat
ECHO texttobewrittentofile >> batchfile.bat
...
etc

大多数行都写得很好,但是我的批处理文件写入另一个批处理文件时遇到了一些不同的问题。

我的批处理文件写入另一个批处理文件的代码是:

ECHO @echo off >> GenerateEmail.bat
ECHO ECHO Opening Stunnel >> GenerateEmail.bat
ECHO pushd .\stunnel\ >> GenerateEmail.bat
ECHO start "" stunnel.exe stunnel.conf >> GenerateEmail.bat
ECHO popd >> GenerateEmail.bat
ECHO ECHO Determining latest log for use with blat >> GenerateEmail.bat
ECHO pushd O:\Logs\%clientname%\ >> GenerateEmail.bat
ECHO for /f "tokens=*" %%a in ('dir /b /od') do set newest=%%a >> GenerateEmail.bat
ECHO popd >> GenerateEmail.bat
ECHO ECHO Generating email containing contents of latest log >> GenerateEmail.bat
ECHO pushd .\blat307\full\ >> GenerateEmail.bat
ECHO ECHO Y | xcopy "O:\Logs\%clientname%\%newest%" ".\" >> GenerateEmail.bat
ECHO blat.exe "%newest%" -to %clientemail% -cc %gmailemail% -server 127.0.0.1:1099 -subject "Offsite Backup for "%1" "%2" - %clientname%" -sig sig.txt >> GenerateEmail.bat
ECHO DEL .\*.log >> GenerateEmail.bat
ECHO popd >> GenerateEmail.bat
ECHO ECHO Closing Stunnel >> GenerateEmail.bat
ECHO pushd .\stunnel\ >> GenerateEmail.bat
ECHO stunnel.exe -exit >> GenerateEmail.bat
ECHO popd >> GenerateEmail.bat

我没有得到我想要的输出,我遇到了以下问题:

ECHO Y | xcopy "O:\Logs\%clientname%\%newest%" ".\" >> GenerateEmail.bat

出来作为

0 File(s) copied

在我需要 %% 的地方,它都会以 % 的形式出现,并且以“blat.exe”开头的行根本没有写在其他问题中。有没有办法让批处理文件写入文本行而不确认这些行中包含的任何命令或符号?

Kane.


所有特殊字符,如^ & | < >必须转义为^^ ^& ^| ^< ^>或者用引号引起来。

每个百分比必须始终加倍。例如:

  • "%1"变成"%%1"
  • %newest%变成%%newest%%
  • %%a变成%%%%a

如果您在所有 ECHO 语句两边加上括号,则无需清除输出文件并重定向每一行。如果这样做,右括号也必须被转义。

>GenerateEmail.bat (
  echo Line 1
  echo Line 2
  echo these must be escaped ^^ ^& ^| ^> ^< ^), these not "^ & | > < )"
)

如果您启用了延迟扩展并且输出包含以下内容,则规则会变得更加复杂!, or ! with ^.

还有其他方法可以避免弄清楚如何转义特殊字符和将百分比加倍。

您可以为每行添加前缀:::并将 FOR /F 与 FINDSTR 结合使用以获得所需的输出。如果您的输出包含,请确保关闭延迟扩展!。下面的代码的唯一限制是你的输出行不能以:(它可以以空格开头,然后是:).

(for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo %%L) >GenerateEmail.bat
:::echo special chars & | < > don't need to be escaped
:::echo % does not need to be doubled
::: :Label
::: :: Comment and label must be indented with at least one space
:::etc

另一种选择是使用以下位置的技术之一:

  • 将段落的内容回显到文件中而不对该段落进行任何修改? https://stackoverflow.com/q/14548151/1012053
  • 在Windows批处理中打印一个段落 https://stackoverflow.com/q/14559789/1012053
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批处理文件创建另一个批处理文件,如何在写入行时忽略命令? 的相关文章

随机推荐

  • 如何启动默认启用深色主题的 jupyter lab?

    答案是这个问题 https stackoverflow com questions 40518614 how to apply theme to jupyter lab指出 JupyterLab Dark 主题现在作为原版的一部分提供jup
  • 在巨大的 gzip 文件顶部添加一行

    我有一个巨大的 gzip 文件 400MB 我想在文件的开头附加一行文本 我正在考虑创建一个带有标题行的 gzip 文件 然后使用zcat合并头文件和日志文件 只是想检查是否有更好 优雅 有效的方法来做到这一点 两个 gzip 压缩文件连接
  • 无法使用 Transform 删除 Web.Config 节点

    我有一个包含这样的重写规则的 web config
  • Spring Boot 与 Jersey 和 Spring Security OAuth2

    以下是 Spring Boot 的示例 来自 GitHub 的示例代码 https github com spring projects spring boot tree master spring boot samples spring
  • 当文本换行时,Flexbox 不再对齐项目

    我正在努力使用flexbox容器连同bootstrap 4将我的元素水平居中对齐 这是我到目前为止所拥有的 div class d flex flex column align items center img class rounded
  • 是否可以在 GCE 上配置容器优化的操作系统虚拟机而无需实际部署映像?

    我想构建一个 CI 管道 其中基础设施阶段在 Google Compute Engine 上使用 Terraform 提供容器优化的操作系统实例beforeDocker 化的应用程序上传到 ArtifactRegistry 并首次部署 我的
  • 根据实体框架导航属性中的项目计数对绑定的 ASP.NET GridView 进行排序

    我有一个 ASP NET 页面 其中有一个绑定到 EntityDataSource 的 GridView 控件 请参阅下面的简化代码 网格显示了一个列表Parent项目并包括一个显示 Count 的列Children对于这位家长 我可以让网
  • PHP ImageMagick setColorspace 不起作用[重复]

    这个问题在这里已经有答案了 我正在尝试通过使用以下代码更改色彩空间来将图像转换为黑白图像 im new Imagick image png im gt setImageColorspace Imagick COLORSPACE GRAY i
  • Aurelia Typescript 项目仅适用于 Chrome

    有谁知道为什么列出 Aurelia Typescript 项目在这个 git 存储库中 https github com cmichaelgraham aurelia typescript只能在 Chrome 浏览器上使用吗 是否存在目前仅
  • 自引用结构定义?

    我写 C 的时间不长 所以我不确定应该如何做这些递归的事情 我希望每个单元格包含另一个单元格 但我在 字段 child 的类型不完整 行 这是怎么回事 typedef struct Cell int isParent Cell child
  • ActionCable:如何使用动态通道

    我用 Rails 5 和 ActionCable 构建了一个简单的聊天 其中有一个简单的 聊天 频道 如何使频道订阅和消息广播动态化 以便我可以创建聊天频道并将消息发送到正确的频道 不幸的是 我找不到这方面的单个代码示例 Update 下面
  • Sqoop 自由格式查询导致 Hue/Oozie 中的参数无法识别

    我正在尝试使用自由格式查询运行 sqoop 命令 因为我需要执行聚合 它作为 Oozie 工作流程通过 Hue 界面提交 以下是命令和查询的缩小版本 处理命令时 query 语句 用引号引起来 会导致查询的每个部分被解释为无法识别的参数 如
  • Flutter:垃圾收集 - 如何检查?

    在 Flutter 中 如何检查我是否正确释放 处置 所有内容 我正在构建一个应用程序 我感觉模拟器在一系列热重载后变得越来越慢 非常感谢您的回答 Dart 带有一个名为的调试器Observatory 它可以满足您所需的一切 从 CPU 内
  • 如何使用 Java 8 Streams 按对象属性分组并映射到另一个对象?

    假设我有一组碰碰车 它们的侧面有尺寸 颜色和标识符 汽车代码 class BumperCar int size String color String carCode 现在我需要将碰碰车映射到List of DistGroup对象 每个对象
  • HTML 5 音频当前位置

    将 HTML 5 与 DOM 一起使用 有没有办法获取用户正在播放音频文件的当前位置 并在稍后返回到该位置 See the HTML媒体元素 http dev w3 org html5 spec Overview html htmlmedi
  • 使用 **kwargs 将 **kwargs 参数传递给另一个函数

    我不明白下面的例子 假设我有这些功能 python likes def save filename data kwargs fo openX filename w kwargs lt 1 fo write data fo close pyt
  • Omniauth-facebook 登录无法正常工作

    当我尝试使用omniauth facebook 登录我的Rails 应用程序时 出现以下错误 这是在 localhost 3000 上测试时 不安全登录被阻止 您无法从不安全页面获取访问令牌或登录此应用程序 尝试将页面重新加载为 https
  • 命令设计模式 - 调用者是可选的吗?

    Command 设计模式中 Invoker 类是可选的吗 客户端需要实例化命令的具体命令和接收器 客户端是否总是需要实例化 Invoker 并将命令对象传递给 Invoker 对象 稍后 每当客户端需要执行命令时 客户端只需询问 Invok
  • FizzBu​​zz 列表理解

    当我学习 python 时 我正在摆弄一些不同的 fizzuzz 脚本 我发现这个效果很好 但我无法破译它是如何工作的 我知道正常的嘶嘶声如何与 for 循环和 if i 3 0 and i 5 0 一起工作 让我困惑的是如何 Fizz n
  • 批处理文件创建另一个批处理文件,如何在写入行时忽略命令?

    我正在编写的 Windows 批处理文件遇到了一些问题 我需要批处理文件将一些特定行写入另一个批处理文件 我一直使用的方法是 type NUL gt batchfile bat ECHO texttobewrittentofile gt g