【问题标题】:Use a received file name as a parameter for an exe in a batch file使用接收到的文件名作为批处理文件中 exe 的参数
【发布时间】:2017-03-08 13:43:17
【问题描述】:

我在不同的子目录中有很多 xml 文件,我想将 xml 文件编码为 base64 并将每个编码的 blob 保存在 txt 中。我使用 Windows .NET Framework Ba​​se64 转换器通过以下命令对单个文件进行编码: base64Converter.exe /e myinputfile.xml mybase64outputfile.txt

这适用于一个文件,但我必须编码 148 个文件。所以我想用一个批处理文件来做到这一点。我是批量编写新手,需要一些帮助。

我现在想到了什么:

FOR /r %%d IN (*.xml) DO (

SET XML=%%d

echo %XML%

)

FOR /r %%r IN (*.xml) DO (

START "" "Patch to base64Converter.exe" /e %XML% out.txt

)

PAUSE

我想将第一个循环中的文件名写入一个变量,并将这个变量处理到 base64Converter.exe。但我的 var 'XML' 存储绝对路径。我该怎么做才能将正确目录中的文件名提供给 base64Converter.exe?还是括号有语法错误?是否也可以覆盖我的xml文件并将base64 blob直接保存在文件中?

我的输出:

C:\Users\myUser\Desktop\mydirectory>(START "" "c:\Users\myUser\Desktop\mydirectory\b64c.exe" /e C:\Users\myUser\Desktop\mydirectory\MyData\ViewBase\panelManager.LayoutStream.xml out.txt )

感谢任何形式的帮助!

【问题讨论】:

  • 如果您阅读了FOR 命令的帮助文件的最底部部分,您将看到修改 FOR 变量所需的内容。
  • 你指的是哪个帮助文件?
  • 您在 cmd 提示符下使用的几乎所有命令(包括任何第三方实用程序)都有某种形式的帮助文件可供您访问。在大多数情况下,这是通过键入命令名称后跟正斜杠和问号来完成的:FOR /?
  • 好的,所以我在文档中找到了参数。并使用 SET XML=%%~fd 获取 xml 文件的完整路径,将其存储在变量中并将其作为第一个参数提供给 base64Converter.exe。将编码的 blob 写入新文件(第二个参数)的好方法是什么?更好的解决方案是覆盖 xmls。这可能吗?

标签: xml loops batch-file base64


【解决方案1】:

更新

我想通了,并为我的目的编写了一个批处理文件。

FOR /R %%d IN (*.xml) DO (

REM create an empty txt with the same filename
echo. 2>%%~pd%%~nd.txt

REM Execute b64c.exe with parameters
START "" /B "%PATH%\b64c.exe" /e "%%~fd" "%%~pd%%~nd.txt"

)

我使用FOR循环的参数来获取完整路径并将它们传递给base64Converter。

感谢您的提示!

【讨论】:

    猜你喜欢
    • 2018-08-11
    • 2015-02-04
    • 2014-05-31
    • 2019-01-27
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多