Batch file batch file可根据文件名中任意位置出现的特定字符串分隔文件

Batch file batch file可根据文件名中任意位置出现的特定字符串分隔文件,batch-file,Batch File,我想移动文件夹c:\test中的文件(所有文件都是.wav文件),其中包含文件名中任何位置出现的字符串“ooc”。我已经为相同的问题编写了一个批处理文件: @echo off cd C:\test FOR /R %completepath% %%G IN (*ooc*.wav) DO ( move /-y "C:\test\*.wav" "C:\ooc\" ) 然而,这是行不通的。请给我任何建议。我想你想要的是: @echo off cd C:\test FOR /R %completepat

我想移动文件夹c:\test中的文件(所有文件都是.wav文件),其中包含文件名中任何位置出现的字符串“ooc”。我已经为相同的问题编写了一个批处理文件:

@echo off
cd C:\test
FOR /R %completepath% %%G IN (*ooc*.wav) DO
(
move /-y "C:\test\*.wav" "C:\ooc\"
)

然而,这是行不通的。请给我任何建议。

我想你想要的是:

@echo off
cd C:\test
FOR /R %completepath% %%G IN (*ooc*.wav) DO (
    move /-y "%%G" "C:\ooc\"
)

通过迭代所有文件一次移动一个文件:

for /r %completepath% %%F in (*ooc*.wav) do move /-y "%%F" "c:\ooc\"
通过迭代文件夹一次移动整个文件夹:

for /r %completepath% %%F in (.) do if exist *ooc*.wav move /-y "%%~fF\*ooc*.wav" "c:\ooc\"
您可以删除IF并将stderr重定向到NUL以隐藏任何“找不到指定的文件”错误消息,但是所有潜在的错误消息都将被隐藏

for /r %completepath% %%F in (.) do move /-y "%%~fF\*ooc*.wav" "c:\ooc\" 2>nul

非常好,谢谢!这是不正确的-仅当
%completepath%
为空时,所编写的移动命令才会成功。应该从MOVE命令中删除该变量。