将具有相同起始字符串的文件移动到具有该字符串名称的文件夹

时间:2019-05-22 19:45:38

标签: batch-file

所以我有一组看起来像这样的文件:

[text A] (space) "(" [text 2].extension

示例:

Joe (Nice Guy) (1993) (v.1).abc
Joe (Bad Man) (2001) (File B).xyz

我想执行以下操作:

扫描文件夹

捕获[文本A]。在上面的示例中,捕获:“ Joe”

创建名为[文本A]的文件夹。在这里,“乔”

将所有具有[text A]字符串的文件移动到文件夹。

如果文件不符合上面的字符串,则不创建文件夹就将其保留并移动。

我希望这是与扩展名无关的,因为在这种情况下(在批处理文件的开头设置扩展名),我有各种文件类型(mp3等)。

我总是使用:

@echo off
for %%a in (*.*) do (
md "%%~na" 2>nul
move "%%a" "%%~na"
) 

但这将为1个文件创建1个文件夹。我无法对其进行编辑以使其如我所愿。 抱歉,我不擅长于此。

我使用Windows 10。

1 个答案:

答案 0 :(得分:0)

只需抛出一个额外的FOR / F循环即可解析出每个文件名的第一个标记。

for %%F in (*) do for /f "delims=(" %%A in ("%%~nF") do (
  md "%%A" 2>nul
  move "%%F" "%%A"
)