我正在批处理文件中工作,并且我有一个Perforce命令可以调用以获取一些用户信息。命令是:
p4 -Ztag -F %clientName% info
现在我需要的是将此命令的结果保存在变量或文件中(理想情况下是前者)。但对于我的生活,我无法弄清楚如何这样做,有人可以帮助我。
我尝试了以下命令:
p4 -Ztag -F %clientName% info > %HOMEPATH%\clientName.txt
但结果是:
p4 -Ztag -F info 1>\Users\UserName\clientName.txt
文件“clientName.txt”包含:
info
哪个不对。
答案 0 :(得分:1)
您总是需要在批处理文件中转义百分比 - 命令行将忽略未定义的环境变量,但脚本会将它们扩展为空字符串。由于这些百分比用于p4
命令的变量扩展,因此无论是否定义了本地环境变量,永远不会希望shell触摸它们。
给它一个旋转:
p4 -Ztag -F %%clientName%% info>CLIENTNAME
set /p CLIENTNAME=<CLIENTNAME
信用:
(第一行将值放入名为CLIENTNAME的文件中,第二行将其从文件中读取到同名的env var。由于某种原因,set /p
不能仅使用像你这样的直接管道认为它会;我放弃了调试那个。)
作为旁注,如果您将其存储在环境变量中,并将其传递给您从其他配方获得的另一个p4命令,请注意这可能是多余的,因为大多数p4命令都在运行在客户端上已经默认为p4 info
给你的同一个客户端。 :)除了Windows env vars之外,还有更简单的方法在p4命令之间传递信息。
答案 1 :(得分:0)
调试批处理应遵循一些规则。
echo on
以显示正在执行的命令_
),set _>>logfile.log
@
进行调试时,@Echo on
@Echo clientName=[%clientName%]
@pause
p4 -Ztag -F %clientName% info
@pause
不要单独使用%HOMEPATH%
%HOMEDRIVE%%HOMEPATH%
或%USERPROFILE%
p4 -Ztag -F %clientName% info > "%USERPROFILE%\clientName.txt"
答案 2 :(得分:0)
感谢您的帮助。以下工作完美:
p4 -Ztag -F %%clientName%% info > "%USERPROFILE%\clientName.txt"
set /p v=<"%USERPROFILE%\clientName.txt"