将多个子文件夹中包含字符串的所有文件移动到父文件夹中

将多个子文件夹中包含字符串的所有文件移动到父文件夹中

我是 Windows 命令行新手,所以对于这个基本问题我深表歉意。这是对问答的后续。https://superuser.com/a/999966/914314

FOR /R "C:\Source Folder" %i IN (*.png) DO MOVE "%i" "C:\Staging Folder"给出了解决方案,但这会找到所有带有扩展名的文件。我想移动名称中包含特定字符串的文件。我确信必须更改 (*png) 位,但我不知道如何在此处搜索字符串 :(

进一步考虑原始帖子的示例,希望移动所有包含字符串的文件colour

|parent
|    |a
|    |    123-colour.png
|    |    123abc.png
|    |b
|    |    456-colour.png
|    |    123abc.png
|    |c
|    |    789-colour.png
|    |    123abc.png

应该成为

|parent
|    123-colour.png
|    456-colour.png
|    789-colour.png
|    |a
|    |    123abc.png
|    |b
|    |    123abc.png
|    |c
|    |    123abc.png

原始文件夹可以且应该保留。为了说明这一点,我将它们留在了示例中。

答案1

您还可以尝试where /r,它返回完整的文件路径"%i"

for /f tokens^=* %i in ('where /r "C:\Source Folder" *colour*.png')do move "%~i" "C:\Staging Folder"
  • 或者...
cd /d "C:\Source Folder" & for /f tokens^=* %i in ('where /r . *colour*.png')do move "%~i" "C:\Staging Folder"

rem :: or using pushd and popd..

pushd "C:\Source Folder" & (for /f tokens^=* %i in ('where /r . *colour*.png')do move "%~i" "C:\Staging Folder") & popd

答案2

找到了一个解决方案:

FOR /R "C:\Source Folder" %i IN (*string*) DO MOVE "%i" "C:\Staging Folder"

我不确定这是否是在命令行中使用 REGEX 的正确方法。但它有效。

答案3

尝试

FOR /R "C:\Source Folder" %i IN (*colour*) DO MOVE "%i" "C:\Staging Folder"

相关内容