这可能看起来像堆栈流中的常见问题,但它的运作方式有点不同。我得到了超过50万+并计算我需要排序的wav文件。所有文件都存储在一个目录中,文件名称如下:
此文件是在20151109(录制日期)上对团队成员的分机60105(OUT60125)的呼叫生成的,并且来电者团队负责人名称为Boyly。
此文件是根据20151110(记录日期)对团队成员的分机60168(OUT60168)的呼叫生成的,呼叫者组长是Girly。
因此,根据上述信息,我想将所有这些文件排序到以下目录结构中:
F:\ Recordings \团队负责人姓名\团队成员的分机\录制日期
这就是我到目前为止所说的,我不知道接下来会做什么:
@echo off
setlocal enabledelayedexpansion
set FolderIncoming=F:\Incoming_Rec
set FileMask=OUT*.WAV
set FolderSorted=F:\Recordings\TeamLeader
for %%a in ("%FolderIncoming%\%FileMask%") do (
Set FileName=%%~a
for /f "tokens=1-2 delims=-" %%b in ("%%~nxa") do (
if not exist "%FolderSorted%\%%e\%%b\%%~na.WAV" (
if not exist "%FolderSorted%\%%e\%%b" md "%FolderSorted%\%%e\%%b"
copy "%%a" "%FolderSorted%\%%e\%%b"
)
)
)
我该怎么做?请注意,我有几个团队领导,他们的团队也有几个成员(扩展)。
答案 0 :(得分:0)
编辑:仅复制数组中列出的扩展程序中的那些录制内容
@echo off
setlocal enabledelayedexpansion
rem Create the array of Team leader names
for %%a in ("161938=Boyly"
"161850=Girly") do (
for /F "tokens=1,2 delims==" %%b in (%%a) do (
set "name[%%b]=%%c"
)
)
set FolderIncoming=F:\Incoming_Rec
set FileMask=OUT*.WAV
set FolderSorted=F:\Recordings
for %%a in ("%FolderIncoming%\%FileMask%") do (
for /f "tokens=1-3 delims=-" %%b in ("%%~NXa") do (
set "leader=!name[%%d]!"
rem Copy only those recordings from Extension listed in the array
if defined leader (
if not exist "%FolderSorted%\!leader!\%%b\%%c\%%~Na.WAV" (
if not exist "%FolderSorted%\!leader!\%%b\%%c" md "%FolderSorted%\!leader!\%%b\%%c"
copy "%%a" "%FolderSorted%\!leader!\%%b\%%c"
)
)
)
)
您可以在this post的批处理文件中阅读有关阵列管理的更多详细信息。