如何基于文件名创建文件夹,然后将其移动到文件夹

时间:2018-01-22 04:16:17

标签: batch-file copy directory move

我希望批处理能够根据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
  • 包含“[Jungle]”的所有文件都会创建一个名为“Jungle”的文件夹 他们被转移到那里。

  • 包含“[People]”的所有文件都会创建一个名为“People”的文件夹 被移到那里。

1 个答案:

答案 0 :(得分:0)

基于[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%的值,没有[的第一个字符。 如果文件夹不存在,则创建该文件夹,然后将文件移动到该文件夹​​中。