gpt4 book ai didi

windows - 删除所有不包含字符串的文件并根据模式重命名文件

转载 作者:可可西里 更新时间:2023-11-01 11:49:27 26 4
gpt4 key购买 nike

我有一个目录,它将文件组织到以 ID 号命名的其他目录中。这些目录中的每一个都包含图标以及图形对象的动画帧。我需要保留所有包含字符串“icon”的文件

这是一个目录示例:

0501
| 05010000.effect.default.0.png
| 05010000.effect.default.1.png
| 05010000.effect.default.2.png
| 05010000.effect.default.3.png
| 05010000.effect.default.icon.png
| 05010000.effect.default.iconRaw.png

之后,目录应该是这样的:

0501
| 05010000.effect.default.icon.png
| 05010000.effect.default.iconRaw.png

如果我还可以将目录中的项目重命名为:

0501
| 5010000.png
| 5010000raw.png

尊重每个图像的原始 ID 号并删除前导 0。

这甚至可能是不可能的,但我需要为数千张图像执行此操作,因此手动过程是不可行的。

最佳答案

下面的脚本将同时进行删除和重命名。但是用于为重命名创建新文件名的替换是区分大小写的,因此文件名必须像您的示例中一样小写。

这实际上并没有执行删除和重命名 - 它只是将命令打印到屏幕上。删除 DEL 和 REN 命令前面的 ECHO 以执行命令。

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%G IN ('DIR /S /B *.png ^| FINDSTR /V icon') DO (
ECHO DEL %%G
)
FOR /F "tokens=*" %%G IN ('DIR /S /B *.png ^| FINDSTR icon') DO (
SET X=%%~nG
SET Y=!X:.info.icon=!
ECHO REN %%G !Y:~1!%%~xG
)

第一个 for 循环删除不正确的文件(与@zb226 的回答相同),第二个循环重命名我们保留的文件。

它的工作原理是:

FOR /F "tokens=*" %%G IN ('DIR /S /B *.png ^| FINDSTR /V icon') DO (
...
)

FOR 执行单引号中的命令,找到要删除的文件,然后在 DO 之后为找到的每个文件名(文件名在 %%G 中)运行一次命令。查找文件的命令使用 DIR 列出目录(/B 仅返回文件名,/S 递归子目录),然后使用 FINDSTR 通过返回不包含 icon 的文件名来过滤文件名>(/V 返回不匹配的内容)。

FOR /F "tokens=*" %%G IN ('DIR /S /B *.png ^| FINDSTR icon') DO (
...
)

FOR 执行单引号中的命令,找到要重命名的文件,然后在 DO 之后为找到的每个文件名(文件名在 %%G 中)运行一次命令。查找文件的命令使用 DIR 列出目录(/B 仅返回文件名,/S 递归子目录),然后使用 FINDSTR 通过返回包含 icon

SET X=%%~nG
SET Y=!X:.info.icon=!
REN %%G !Y:~1!%%~xG

这里发生了很多事情:

  • X=%%~nG 仅将存储在 %%G 中的文件名分配给 X
  • !X:.info.icon=! 从文件名中删除 .info.icon
  • !Y:~1! 删除第一个字符(前导零),因此 !Y:~1! 是新文件名,%% ~nG 是旧文件名。
  • 现在 %%G 是旧文件的完整驱动器、路径、文件名和扩展名,!Y:~1!%%~xG 构建文件名和新文件的扩展名。

关于windows - 删除所有不包含字符串的文件并根据模式重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33681149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com