批量比较两个文件名的中间部分以在它们不同时执行某些操作[关闭]
Posted
技术标签:
【中文标题】批量比较两个文件名的中间部分以在它们不同时执行某些操作[关闭]【英文标题】:Batch compare middle portion of two file's names to do something if they are different [closed] 【发布时间】:2021-02-09 06:23:38 【问题描述】:我正在尝试隔离 ipsw 文件名中的版本号。
下面提交的另一个代码运行良好,但不适用于: iPhone_5.5_P3_14.1_18A8395_Restore
我需要隔离“14.1”,而不会意外隔离“5.5”。
【问题讨论】:
您的帖子似乎有太多部分,因此您的问题目前过于宽泛,无法在指南内提供帮助。请使用edit facility 来改进它,使用阅读How to Ask 及其每个链接页面的建议。在您这样做的同时,请查看我在答案区域中的帖子,(我可能稍后将其删除,因为从技术上讲它不是答案),它试图向您展示如何拆分用于可能修改每个部分的一个或多个部分的文件名。 如果您想复制/同步文件,请查看RoboCopy
命令。要了解如何使用它,请打开命令提示符窗口,(cmd
),输入help robocopy
,然后按ENTER]
键。
【参考方案1】:
开头段落中的信息表明,您没有找到在目录中搜索具有模式/glob 的文件并隔离其中一部分的示例。 IMO,仅在batch-file 标签下,该网站已对此进行了数千次报道。不过,这里有一些示例代码可以帮助您。
如果我猜错了,请记得先调整路径%AppData%\Apple Computer\iTunes\iPhone Software Updates
在线2
。
@For /F Tokens^=1-4^ Delims^=_^ EOL^= %%G In ('Dir /B /A:-D^
"%AppData%\Apple Computer\iTunes\iPhone Software Updates\iPhone*,?_*.?.?_*_Restore.ipsw"'
) Do @For /F Tokens^=1-3^ Delims^=.^ EOL^= %%K In ("%%H") Do @Echo Token1=%%G:Token2=%%H^
:NestedToken1=%%K:NestedToken2=%%L:NestedToken3=%%M^
:Token3=%%I:Token4=%%J^
:Token4Name=%%~nJ:Token4Extension=%%~xJ
@Pause
如果您愿意,您也可以将它作为一个单独的、难以阅读的行:
@(For /F Tokens^=1-4^ Delims^=_^ EOL^= %%G In ('Dir /B /A:-D "%AppData%\Apple Computer\iTunes\iPhone Software Updates\iPhone*,?_*.?.?_*_Restore.ipsw"') Do @For /F Tokens^=1-3^ Delims^=.^ EOL^= %%K In ("%%H") Do @Echo Token1=%%G:Token2=%%H:NestedToken1=%%K:NestedToken2=%%L:NestedToken3=%%M:Token3=%%I:Token4=%%J:Token4Name=%%~nJ:Token4Extension=%%~xJ)&Pause
【讨论】:
谢谢。这工作得很好,除了包含“。”的 ipsw 文件名。在显示版本号之前,例如在 iPhone_5.5_P3_14.1_18A8395_Restore 中显示“5.5”,但不显示“14.1”。 不应该!首先,我使用的 glob,iPhone*,?_*.?.?_*_Restore.ipsw
与您现在完全更改的示例文件模式 iPhone_5.5_P3_14.1_18A8395_Restore
不匹配,我相信它是 iPhone13,3_14.0.1_18A8395_Restore
。因为您已经更改了模式,所以您需要根据需要更改 glob、标记和分隔符。我没有在发布答案后修改答案的习惯,只是因为问题发生了变化。我将其发布为答案的全部原因是为了让您了解如何使用标记和分隔符来拆分字符串以满足您的目的。以上是关于批量比较两个文件名的中间部分以在它们不同时执行某些操作[关闭]的主要内容,如果未能解决你的问题,请参考以下文章