6

实际上我需要编写一个批处理脚本,首先我需要检查所需的客户端规范是否已经存在?如果存在,那么我应该删除它。

如果所需的客户端规范存在或不存在,您能否告诉我们如何签入脚本?

4

5 回答 5

5

在 Windows 命令行上,您可以执行以下操作

set P4CLIENT=client-name
p4 clients -e %P4CLIENT% | findstr %P4CLIENT% >nul

p4 clients -e %P4CLIENT%将输出所有匹配的客户端%P4CLIENT%findstr将搜索p4 clients客户端名称的输出并打印它。重定向到 tonul将抑制此输出,但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!

于 2015-07-14T10:16:19.127 回答
4

我发现这个命令有效:

p4 -ztag clients -e bad

如果客户端不存在,则不返回任何内容

于 2018-03-23T13:33:05.160 回答
3

尝试:

p4 client -o -t $CLIENT_NAME_YOU_WANT_TO_CHECK

这样做 - 试图从另一个客户的规范创建一个客户作为我的“新客户”的模板。

如果有输出(意味着 $CLIENT_NAME_YOU_WANT_TO_CHECK 实际存在) - 它会在不进入编辑器的情况下将其规范显示为 STDOUT 的文本,如果客户端不存在 - 它只是输出到 STDERR:

Client '$CLIENT_NAME_YOU_WANT_TO_CHECK' doesn't exist.

“-o”将其打印在屏幕上,而不是实际创建客户端……好技巧,对我有用,希望对您有所帮助:)

于 2014-05-28T10:03:49.610 回答
2

我从您的评论中看到您找到了解决方案,但这是另一种看法......

如果您想删除该名称的客户端,您可以p4 clients通过尝试删除客户端来节省自己的通话时间。如果它存在,它将被删除(除非它有搁置文件等)。如果它不存在,那么它就是无操作 - 没有伤害,没有犯规。

于 2013-10-29T18:17:17.210 回答
2

执行p4 client -o client_name并检查是否存在更新:或访问:字段。这些将为已经存在的客户端设置,但不会为不存在的客户端设置。

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

p4 -ztag -F "%Update%" client -o client_name将为现有客户返回一个带有日期和时间的字符串,或者为不存在的客户返回任何内容。

于 2017-02-08T14:31:29.300 回答