我是 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"