首页 > 解决方案 > 批处理文件调用 VB 脚本并将文件名仅作为字符串传递

问题描述

我有一个调用 VB 脚本文件的批处理文件。此 VB 脚本来自 MS Office 套件,位于已安装文件夹中。我的文件调用 VB 脚本并使用>符号将其通过管道传输到文件。如果您的重定向是字符串,则此方法有效。我想知道如何使用变量重定向到文件。

我只包含一小部分代码,显示我希望它如何工作。

正如所写的那样,这是有效的。但是我希望我的批处理文件使用变量而不是引号中的文本。事实上,我的批处理文件根据批处理文件所在的位置创建路径。

::Create file and display on screen
Echo Writing Information to File: "OfficeStatus.txt"
Call cscript ospp.vbs /dstatus > OfficeStatus.txt
Echo.

如下图这样写,就不行了:

::Create file and display on screen
Echo Writing Information to File: "OfficeStatus.txt"
Call cscript ospp.vbs /dstatus > %_sLogFile%
Echo.

我不知道问题是否是因为重定向无法处理变量。变量中可能包含的示例:

_sLogFile=E:\UserName\Documents\Status\OfficeStatus.txt.

任何想法都会很棒。顺便说一句,该变量正确包含路径和文件名......所以这不是问题。

标签: batch-file

解决方案


it does not work手段did not do what I expected,不幸的是没有告诉我们它做了什么。

是不是系统崩溃了?创建错误消息(如果是,是什么消息)?在意想不到的地方创建输出文件??

就个人而言,我怀疑你隐瞒了什么username。在不确切知道该文本是什么的情况下,我们开始猜测,这不是一种合乎逻辑的方法。它不必是真实的用户名,Fred Bloggs如果需要,可以用真实的名字来掩盖它。

我相信这username可能是%username%从系统中检索名称,或者是真正的文字。这样做的问题是此类名称通常包含空格,您需要"Enclose the full filename in quotes".

看 - 如果你告诉我们_sLogFile=E:\Fred Bloggs\Documents\Status\OfficeStatus.txt这一切都会更清楚 - 假设我对问题原因的猜测是正确的。

也许您应该查找名为 like 的文件,这可能E:\Fred是预期输出的结束位置。


推荐阅读