使用 .txt 日志文件将文件移动到多个文件夹

使用 .txt 日志文件将文件移动到多个文件夹

我有一个logfile.txt包含以下文本行的文件:

C:\VIDEO\My Video 1\My Video 1.mkv
C:\VIDEO\MyVideo2\MyVideo2.mkv
C:\VIDEO\My.Video.3\My.Video.3.mkv

以及C:\Temp包含以下文件的文件夹:

My Video 1.mkv
MyVideo2.mkv
My.Video.3.mkv

我需要使用来logfile.txt匹配日志文件中列出的相应文件名.mkv,然后将文件移动到其正确的文件夹(如日志文件中所示)。

例如, My Video 1.mkv应移至C:\VIDEO\My Video 1\

相关文件夹已经存在C:\VIDEO,因此不需要创建。

我如何为此编写批处理文件?

我现在就开始做这样的事情,但是现在我陷入了困境:

@echo off
setlocal enableDelayedExpansion
set "logfile=C:\Temp\logfile.txt"
set "SourcePath=C:\Temp"
set "DestPath=C:\VIDEO"

if exist ..\%DestPath%\nul rd /s /q ..\%DestPath%
if not exist ..\%DestPath%\nul md ..\%DestPath%

for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "%logfile%"') do move "%SourcePath%\%%a" "%DestPath%"

有人可以帮忙吗?

答案1

尝试这个:

@echo off
set "logfile=C:\Temp\logfile.txt"
set "SourcePath=C:\Temp"
REM We don't need to set DestPath, because we don’t use it.
REM set "DestPath=C:\VIDEO"
for /f "delims=\ tokens=1-4 usebackq" %%A in ("%logfile%") do (
    move "%SourcePath%\%%D" "%%A\%%B\%%C\%%D"
)

您需要用反斜杠 ( \) 将路径名分开。
例如,C:\VIDEO\My Video 1\My Video 1.mkv将被拆分为

%%A = C:
%%B = VIDEO
%%C = My Video 1
%%D = My Video 1.mkv

文件 名字在%%D我们移动 "%SourcePath%\%%D".
然后我们继续 "%%A\%%B\%%C\%%D",因为这是目标路径/文件名,重新组合。

这假设“日志文件”中的所有路径/文件名都是绝对路径名(以驱动器号和 开头 \),长度恰好为三个段(即两个目录和一个文件名)。如果它们是可变长度,这会变得更加困难。

相关内容