如果文件包含 2 个带批处理的字符串,则重命名文件

Renaming files if they contain 2 strings with batch

我有一个文件 "codes.txt" 每行包含一个代码。

我正在尝试在文件夹中搜索并重命名名称中包含代码以及另一个字符串的所有文件:

@echo off

for /F "tokens=*" %%b in (codes.txt) do  (

// If file names in folder contain %%b and "foo", rename to %%b.'string'
// If file names in folder contain %%b and "foo2", rename %%b.'string2'

)

谢谢

假设文件 `codes 包含:

1234
5678

并且您的目录中有一个名为:

的文件
foo1234.txt
1234ABCfoo.txt
5678.txt

那么这个脚本会做:

@echo off
for /f %%i in (codes.txt) do (
   for /f %%a in ('dir /b /a-d *%%i* ^| findstr "foo"') do echo %%a
)

首先循环遍历 codes.txt,使用换行符作为分隔符。然后它将对包含代码的文件执行目录,并在名称中的任何位置为 foo 执行 findstr。使用上面的文件,它将回显找到的仅有的 2 个匹配项:

foo1234.txt
1234ABCfoo.txt

它不会匹配 5678.txt 因为它的名称中没有任何地方 foo

显然您需要将我脚本中的 echo 部分更改为您想要实现的命令。