我希望能够以编程方式从批处理脚本设置p4客户端的视图(如'p4 client -o'的输出中所示)。
我确信它在unix(一行)中很容易[见更新2]但是如何在不安装第三方软件(例如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
答案 0 :(得分:1)
我有点不清楚你到底要做什么。我对perforce一无所知,但对批处理文件有点了解。
如果您需要以编程方式使用p4 client -o
的输出,那么您需要FOR / F命令。您可以通过在Windows命令提示符下键入help for
或for /?
来获取FOR文档。
例如,以下内容只是将命令的输出回显到屏幕,忽略以默认EOL字符(;
)开头的空行和行。但显然可以做得更多。
for /f "delims=" %%A in ('p4 client -o') do (
echo %%A
)
FOR命令对于它的许多怪癖来说都是一个有很多非直观解决方案的野兽。如果您对需要做什么提供更明确的解释,那么我可以提供更好的指导。
答案 1 :(得分:0)
如果您可以使用其中一个Perforce API,这会容易得多。这样你就不会批量进行这么多的文本解析。你觉得perl,python,ruby还是.net?