我在一个名为“电话录音”的目录中有 1000 个这样命名的文件
[Jeff Reese] 10-20-2012 at 19_39_57.amr
[Jessie Tuttle] 11-26-2012 at 17_29_15.amr
[Jody Huth] 10-19-2012 at 19_49_56.amr
更复杂的是,我们的录音系统在 2013 年从 .amr 更改为 .3gp,如下所示:
[Kim DeBouver] 10-21-2013 at 09_47_41.3gp
我还注意到还有其他问题,例如:
[Jason R Tuttle] 10-26-2012 at 17_24_40.amr
更糟糕的是……
[9154323469] 10-24-2012 at 18_38_25.amr
我希望能够运行一个批处理文件或任何其他可能存在的实用程序,以将这些文件中的每一个移动到一个单独的子目录中,如下所示:
\Phone Recordings\[Kim DeBouver]\2012\ (all of the 2012 recordings)
\Phone Recordings\[Kim DeBouver]\2013\ (all of the 2013 recordings)
对于每个名称,他们将拥有自己的文件夹,并且每个名称中的记录日期都有自己的年份。
我不介意在文件夹中有一个批处理文件,只要它在所有其他移动过程中不移动它。
它不需要递归扫描。
当我这样做时,我以为我有一些接近的东西:
for %%f in (*.*) do call :handlefile %%f
:handlefile
set pad=e:\Phone Recordings
for /f "delims= tokens=1,* " %%a in ("%1 %2 %3") do call :step %%a %%b
echo "%fn%" "%pad%"
@exit /B
:step
if !%2!==!! EXIT /B
if !%2!==!at! EXIT /B
if !%3!==!! EXIT /B
if !%3!==!at! EXIT /B
set pad=%pad%\%1 %2
for /f "delims=_ tokens=1,* " %%a in ("%1 %2 %3") do call :step %%a %%b
@EXIT /B
任何帮助都会很棒,我想我走错了路……RegEx也可以在Windows命令行上使用吗?