Batch file perforce命令到命令行变量的结果

Batch file perforce命令到命令行变量的结果,batch-file,command-line,perforce,Batch File,Command Line,Perforce,我在批处理文件中工作,为了获得一些用户信息,我需要调用Perforce命令。命令是: p4 -Ztag -F %clientName% info 现在我需要的是将这个命令的结果保存在变量或文件中(最好是前者)。但就我的一生而言,我不知道该怎么做,有人能帮我吗 我尝试了以下命令: p4 -Ztag -F %clientName% info > %HOMEPATH%\clientName.txt 但结果是: 文件“clientName.txt”包含: 这是不正确的。调试批处理应该遵循一些规

我在批处理文件中工作,为了获得一些用户信息,我需要调用Perforce命令。命令是:

p4 -Ztag -F %clientName% info
现在我需要的是将这个命令的结果保存在变量或文件中(最好是前者)。但就我的一生而言,我不知道该怎么做,有人能帮我吗

我尝试了以下命令:

p4 -Ztag -F %clientName% info > %HOMEPATH%\clientName.txt
但结果是:

文件“clientName.txt”包含:


这是不正确的。

调试批处理应该遵循一些规则

  • 在打开的cmd窗口中运行批处理
  • 暂时打开
    echo
    以显示正在执行的命令
  • 将变量的内容回显到屏幕以查看当前状态
  • 在关键点插入暂停命令,以避免过度滚动
  • 还可以暂时禁用较长的提示消息以整理输出
  • 在要检查的变量中插入前缀(如
    ),
    因此,您可以使用
    set\u>>logfile.log将它们输出到日志文件
  • 使用
    @

不要单独使用
%HOMEPATH%
,也不要与
%homeprive%%HOMEPATH%
%USERPROFILE%

p4 -Ztag -F %clientName% info > "%USERPROFILE%\clientName.txt"

在批处理文件中始终需要转义百分比——命令行将忽略未定义的环境变量,但脚本将它们扩展为空字符串。由于这些百分比用于
p4
命令的变量扩展,因此无论是否定义了本地环境变量,您都不希望shell触及它们

试一试:

p4 -Ztag -F %%clientName%% info>CLIENTNAME
set /p CLIENTNAME=<CLIENTNAME
p4-Ztag-F%%clientName%%info>clientName

set/p CLIENTNAME=谢谢您的帮助。以下几点非常有效:

p4 -Ztag -F %%clientName%% info > "%USERPROFILE%\clientName.txt"
set /p v=<"%USERPROFILE%\clientName.txt"
p4-Ztag-F%%clientName%%info>%USERPROFILE%\clientName.txt

set/p v=问题出在哪里,错误消息说了什么,如果有的话?“我搞不懂”不是一个精确的失败描述!语法看起来像文件,尽管您使用的是相对路径,所以您需要知道批处理脚本的当前工作目录以查找输出文件…以捕获变量中的命令输出,检查此线程::p4-Ztag-F%clientName%info>%HOMEPATH%\clientName.txt的结果是:p4-Ztag-F info 1>\Users\MPtesting\clientName.txt,文件包含:info,这是不正确的。为什么要破坏我制作的代码格式?无论如何,变量
%clientName%
显然是空的。您是否在某种括号中使用命令行(如
for
循环或
if
条件)?
p4 -Ztag -F %clientName% info > "%USERPROFILE%\clientName.txt"
p4 -Ztag -F %%clientName%% info>CLIENTNAME
set /p CLIENTNAME=<CLIENTNAME
p4 -Ztag -F %%clientName%% info > "%USERPROFILE%\clientName.txt"
set /p v=<"%USERPROFILE%\clientName.txt"