首页 > 解决方案 > CMD:按文件夹结构对文件进行排序

问题描述

我正在尝试创建一个 BAT,它会自动将输入文件夹中的 ZIP 排序到相应的目标文件夹中。

所有 ZIP 都以序列号 001 File.zip、002 File.zip、003 File.zip 等开头。

目标文件夹根据相同的方案命名:001、002、003、...、999。

因此,如果 ZIP 进入输入文件夹,它应该自动分配到具有相同编号的相应目标文件夹。

但是由于目标文件夹最多为 999 我不想事先写下所有路径...

到目前为止,我的代码如下所示:

SET input=C:\Daten\Input
SET target=C:\Daten\Target

for /r %input% %%a in (*.zip) do (
Set FILE=%%~nxa
Set FILEWITHOUTEXT=%%~na

Set SPLITABLE_NAME=!FILEWITHOUTEXT:_= !
for %%t in (!SPLITABLE_NAME!) do set FIRSTTOKEN=%%t
)
copy /Y %%a %target%\!FIRSTTOKEN!\!FILE! 

不幸的是,整个事情根本不起作用。

标签: batch-filecmd

解决方案


根据 Stephan 的评论和一些额外的代码清理和最佳实践使用,您的代码应该如下所示。

:sort
SET "input=C:\Daten\Input"
SET "target=C:\Daten\Target"

for /r "%input%" %%a in (*.zip) do (
    For /f "tokens=1 delims=_ " %%t in ("%%~na") do (
        copy /Y "%%~a" "%target%\%%t\"
    )
)

推荐阅读