Perforce:是否有命令可以检查客户端规格是否存在?

6

实际上我需要编写一个批处理脚本,在这个脚本中,首先我需要检查所需的客户端规范是否已经存在。

如果已经存在,那么我应该将其删除。请问您能告诉我们如何在脚本中检查所需的客户端规范是否存在吗?


这太依赖于规格了。如果没有定义规格,就没有得到答案的机会。 - zozo
例如,我想检查名为build-new的Perforce客户端规范,如果存在,则使用命令p4 client -d build-new将其删除。 - user2369546
1
我已经得到答案,如下所示:p4 clients | findstr /i "clientname"> null,如果 ERRORLEVEL 0 则跳转到 echo "Client already exist"。 - user2369546
你想要在 https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_clients.html 中记录的“p4 clients -e CLIENT_NAME”命令的答案(在pdx9k9e9和kdubs的回答中). - qneill
6个回答

5
在 Windows 命令行中,您可以执行以下操作:
set P4CLIENT=client-name
p4 clients -e %P4CLIENT% | findstr %P4CLIENT% >nul

p4 clients -e %P4CLIENT%会输出所有匹配%P4CLIENT%的客户端。 findstr将搜索p4 clients的输出以查找客户端名称并打印出来。将重定向到nul将抑制此输出,但findstr还将设置%errorlevel%变量。

一些例子:

p4 clients -e existing-client | findstr existing-client >nul
echo %errorlevel%

将返回0。

p4 clients -e does-not-exists | findstr does-not-exists >nul
echo %errorlevel%

将返回1。

如果您想要执行某些操作,当给定的客户端空间不存在时,可以运行此命令:

p4 clients -e does-not-exists | findstr does-not-exists >nul || create-client.bat

如果您想执行某些操作,如果给定的客户端空间存在,则可以运行此命令:

p4 clients -e does-not-exists | findstr does-not-exists >nul && do-something.bat

感谢来自Perforce在线聊天支持的Adam!


4
我发现这个命令可行:
p4 -ztag clients -e bad

如果客户端不存在,它将不返回任何内容。


3

尝试:

p4 client -o -t $CLIENT_NAME_YOU_WANT_TO_CHECK

这段代码的作用是尝试使用另一个客户端的规范作为模板来创建“新客户端”的客户端。如果有输出(即$CLIENT_NAME_YOU_WANT_TO_CHECK实际存在),它将在不进入编辑器的情况下将其规范显示为文本到标准输出,并且如果客户端不存在,则只会输出到标准错误流中。
Client '$CLIENT_NAME_YOU_WANT_TO_CHECK' doesn't exist.

“-o”是在屏幕上打印输出而不是实际创建客户端的指令...这是一个很好的技巧,适合我的需求,希望对您也有所帮助 :)

2

执行 p4 client -o client_name 命令,并检查 Update: 或 Access: 字段是否存在。这些字段将为已存在的客户端设置,但对于不存在的客户端则不会。

如果您使用的是2013.2或更高版本的客户端,则可以使用格式化输出使其更加容易。

p4 -ztag -F "%Update%" client -o client_name 命令将返回一个包含现有客户端的日期和时间字符串,或者对于不存在的客户端则不返回任何内容。


2

我看到你的评论,知道你找到了解决方案,但这里还有另一种方法...

如果你想通过该名称删除客户端,你可以尝试直接删除客户端而不必调用p4 clients。如果客户端存在,则会被删除(除非它有未提交的文件等)。如果不存在,则不会发生任何事情 - 没有伤害,也没有损失。


0

提示:使用--exists功能与-o一起使用。

例如,尝试:p4 client --exists -o SomeWorkspace

如果数据库中存在SomeWorkspace,则会显示客户端规范和0退出代码。

如果不存在,则会获得非零退出代码和错误消息,例如:

Client 'SomeWorkspace' doesn't exist.

这适用于各种规范类型(用户、客户端、流等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接