如何根据文件名创建文件夹,然后移动到文件夹

How to create folders based on file names and then move them to the folders

我想要一个基于zip文件自动创建文件夹的批处理

zip 文件有不同的名称,我想自动创建与这些文件同名的文件夹并将它们全部移动到那里。

示例:

我有这些文件:

[Jungle] part 1.zip
[Jungle] part 2.zip
[Jungle] part 3.zip
[People] Of babies.zip
[People] Of people.zip
[Animals] From the sea.zip
[Animals] Furry.zip

基于 [folder] etc.zip 的模式。

@echo off
setlocal

for %%A in ("[*]*.zip") do call :movefile "%%~A"
goto :eof

:movefile
setlocal
for /f "delims=]" %%A in ("%~1") do (set "folder=%%~A") & goto :next
:next
set "folder=%folder:~1%"
if not exist "%folder%" md "%folder%"
move "%~1" "%folder%"
goto :eof

for 循环搜索匹配 [*]*.zip 模式的文件 并对找到的每个文件调用 :movefile 标签。文件名 作为参数传递给 %1 的第一个参数。 %~1 去掉外引号,这样它就可以放在新的外引号中。 :movefile 标签中的 for 循环将 "%~1" 字符串分隔为 字符 ]。变量 folder 将被设置为第一个标记。 goto :next 确保只完成一个循环。 %folder:~1%%folder% 的值,去掉了 [ 的第一个字符。 如果文件夹不存在,则创建文件夹,然后将文件移动到文件夹中。