我有每天需要存档的文本文件,并希望自动化它。 大约有100个用户文件夹,每个用户文件夹有20个子文件夹。
Ex User Folder structure:
D:\Logs\John Hayse\01
D:\Logs\John Hayse\02
D:\Logs\John Hayse\03
etc... up to D:\Logs\John Hayse\20
Ex filenames:
John.Hayes.T01.Daily.Log.txt
John.Hayes.T02.Daily.Log.txt
John.Hayes.T04.Tasks.To.Complete.txt
Billy.Gavin.T02.Daily.Logs.txt
我开始修改一个批处理文件,该文件执行数百个if if exists语句,如下所示:
if exist D:\John.Hayes.T01* move D:\John.Hayes.T01* D:\Logs\John Hayse\01"
if exist D:\John.Hayes.T02* move D:\John.Hayes.T02* D:\Logs\John Hayse\02"
如果我创建一个包含所有用户文件夹的单独文本文件:
dir "D\Logs" /b /a:d >D:\UserFolderList.txt
我如何使用它来创建if exists语句一次并遍历所有Users文件并将它们放在正确的User文件夹和相应的子文件夹中##?
Ex.
D:\John.Hayes.T02.Daily.Log.txt archive to D:\Logs\John Hayes\02
用户文件始终以其FirstName.LastName.T ##开头,但用户的文件夹有空格而不是'。'在他们的名字和姓氏之间。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "tokens=1,2" %%a IN (
'dir /b /ad "%destdir%\*" '
) DO FOR %%n IN (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20) DO (
IF EXIST "%sourcedir%\%%a.%%b.t%%n.*" (
MD "%destdir%\%%a %%b\%%n\"
MOVE "%sourcedir%\%%a.%%b.t%%n.*" "%destdir%\%%a %%b\%%n\"
)
)
GOTO :EOF
这应该执行您描述的任务 - 您需要更改sourcedir
和destdir
的设置以适应。
如果目标目录尚不存在,则会创建目标目录。如果需要,将2>nul
附加到MD
行以取消already exists
消息。
请注意,您的计划存在明显缺陷。您显然不会满足目标文件已存在的可能性。