1

我希望能够从批处理脚本以编程方式设置 p4 客户端的视图(如在“p4 客户端 -o”的输出中)。

我敢肯定这在 unix 中会很容易(一行)[参见更新 2],但是如何在不安装 3rd 方软件(例如 grep / sed)或编写 C# 程序的情况下在 Windows 中做到这一点(这似乎有点矫枉过正为了简单起见,我想做的事)。

更新 :

上面的命令输出注释以及这样的设置;

#  View:        Lines to map depot files into the client workspace.

View: Path_to_depot Path_to_local

我想应用的逻辑是

For each line in output
if line.substring(0,5) equals "View:"
replace line with %newviewsetting% 

或者如果它更容易

split output with space as delimiter
if the node equals "View:" and previous node not equal to #
set the next node to %myPathToDepotSetting% 

更新 2:

在 Unix 中,命令是

p4 client -o | sed 's/^View:.*/View: New view/' | p4 client -i

这实际上是在说;将文本输出到命令行 用我的新视图替换以 View 开头的行 将其输入回 p4

4

2 回答 2

1

我有点不清楚你到底想要做什么。我对 perforce 一无所知,但对批处理文件却知之甚少。

如果您需要以编程方式处理的输出,p4 client -o那么您需要 FOR /F 命令。help for您可以通过键入或for /?从 Windows 命令提示符获取 FOR 文档。

例如,以下将简单地将命令的输出回显到屏幕上,而忽略空白行和以默认 EOL 字符 ( ;) 开头的行。但显然可以做的还有很多。

for /f "delims=" %%A in ('p4 client -o') do (
  echo %%A
)

FOR 命令有点像野兽,它的许多怪癖有很多非直观的解决方案。如果您对您需要做什么提供更清晰的解释,那么我可能能够提供更好的指导。

于 2012-10-26T17:54:55.700 回答
0

如果您可以使用其中一种 Perforce API,这会容易得多。这样你就不会批量进行这么多的文本解析。您对 perl、python、ruby 或 .net 感到满意吗?

于 2012-10-27T02:37:18.130 回答