首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查挂起的文件,如果文件在挂起列表中,请转到eof,如果不执行

检查挂起的文件,如果文件在挂起列表中,请转到eof,如果不执行
EN

Stack Overflow用户
提问于 2021-01-24 15:45:42
回答 1查看 91关注 0票数 0

我试图在我打开的绝对记录中找到所有的挂件列表文件,如果在挂件列表中有一些挂件文件,我想执行:eof函数,如果不是,我想要do something

我试过像这样

代码语言:javascript
运行
复制
@echo off
cls
set P4CLIENT=<Workspace_name>
set P4PORT=<IPadress:port>
set P4USER=%username%

set Depot_Path=//Depoth/path/...

FOR /F "delims=" %%i IN ('p4 opened -u %username% //Depoth/path/...') DO set open_files=%%i
echo %open_files%

if %open_files% =="" (
    echo No file are in pendig list
    goto execute
    ) else (
        echo files are in pending list, please submit them if needed or revert them 
        echo %open_files%
        goto eof
    )

:execute
<Do something>
:eof

当我执行上面的脚本时。我可以看到控制台上打印的已打开的文件,但在此之后,以的形式抛出错误的脚本此时是意外的.

如果我想执行:eof do something函数的摆表中有一些挂起的文件,那么我应该做什么来获得,如果不是,我想要do something

EN

回答 1

Stack Overflow用户

发布于 2021-01-24 16:17:31

免责声明:我非常了解Perforce,但是.bat语法几乎没有。除了迭代p4 opened输出这一非常普遍的概念之外,我并不真正知道这条p4 opened行在做什么。

我认为问题在于,您的脚本希望p4 opened只打印文件名,而实际情况是它会像这样打印输出:

代码语言:javascript
运行
复制
C:\Perforce\test>p4 opened ...
//stream/test/bar#1 - edit default change (text)

您所看到的错误可能是由于FOR语句试图解析这一行输出并被-字符绊倒所致。

一个非常简单的解决方法是使用p4-F全局选项将输出重新格式化为文件路径:

代码语言:javascript
运行
复制
C:\Perforce\test>p4 -F %depotFile% opened ...
//stream/test/bar

因此:

代码语言:javascript
运行
复制
@echo off
cls

FOR /F "delims=" %%i IN ('p4 -F ^%depotFile^% opened ...') DO set open_files=%%i
echo %open_files%

if %open_files% =="" (
    echo No file are in pendig list
    goto execute
    ) else (
        echo files are in pending list, please submit them if needed or revert them 
        echo %open_files%
        goto eof
    )

:execute
<Do something>
:eof

指纹:

代码语言:javascript
运行
复制
opened
files are in pending list, please submit them if needed or revert them
opened
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65872617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档