【问题标题】:Batch file to delete ClearCase view-private directories and files用于删除 ClearCase 视图私有目录和文件的批处理文件
【发布时间】:2016-11-07 11:13:21
【问题描述】:

在这个论坛上搜索后,我终于找到了下面这两个命令行,我在批处理文件中运行以删除快照视图中的 ClearCase 视图私有目录和文件。

REM First delete view-private directories
for /F "usebackq delims=" %%i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do ( if exist "%%~i\" ( rmdir /S /Q "%%i" ) )

REM And then delete view-private files
for /F "usebackq delims=" %%i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do ( if not exist "%%~i\" ( del /S /Q /F /A:H "%%i" ) )

但是,我有时会收到这些错误:

找不到 C:\Source\Folder\FileA.log
找不到 C:\Source\Folder\FileB.log
找不到 C:\Source\Folder\SubFolder\FileC.pbl

这些文件是查看私有文件,它们确实存在于提供的位置。但看起来批处理文件无法“看到”删除它们。我做错了什么?

【问题讨论】:

  • 如果路径超过 255 个字符?
  • @VonC 不,最长的路径只有 144 个字符。
  • 我能想到的都是正确的问题(没有读取权限),或者是一个保留该文件句柄的进程(在完全重启 Windows 后尝试相同的命令)
  • 您可以使用 MS/System Internals Process Monitor 工具检测到问题。运行 procmon 跟踪并将过滤器设置为“路径...以 ... c:\Source 开头”并启动您的脚本可能会让您对问题有一些了解。如果您实际上使用的是动态视图,并且使用的是旧的 ClearCase 版本,则需要进行修补,因为 procmon 可能会蓝屏某些旧的 7.1.x、8.0.0 和 (IIRC) 8.0.1.0 和 8.0.1.1 版本.

标签: batch-file clearcase


【解决方案1】:

我更新了删除命令以删除开关,我的批处理文件终于能够找到视图私有文件并将它们删除。

REM And then delete view-private files
for /F "usebackq delims=" %%i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do ( if not exist "%%~i\" ( del "%%i" ) )

【讨论】:

    【解决方案2】:

    你为什么不使用 cleartool ls -view_only?它消除了这里的很多解析乐趣。

    【讨论】:

    • 因为它也会返回签出的文件,这不是我想要的。
    【解决方案3】:

    'cleartool lsprivate -other' 没有列出你想要的吗?

    【讨论】:

    • 彼得,lsprivate 仅适用于动态视图。从@TDN 提供的路径,我想我们可以推断出快照视图。
    • @BrianCowan 是的,你是对的。我正在快照视图中执行此操作。我已将我的问题编辑得更具体。
    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2011-02-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多