【问题标题】:Batch - move files into folders that has at least one identical word批量 - 将文件移动到至少有一个相同单词的文件夹中
【发布时间】:2016-05-04 01:02:33
【问题描述】:

我在目录 A 中有这些 文件夹 名称:

Veep
Vegas
Valentina
Valeria Medico Legale

我在同一目录 A 中也有这个 文件 列表

Veep - Season 1 BDMux
Valentina S01e01-13
Vegas S01e01-21
Valeria Medico Legale S01-02e01-16

例如

Veep [folder]
Veep - Season 1 BDMux [file]

veep 是文件夹和文件名的同一个词。
我想移动这个文件

Veep - Season 1 BDMux

在这个文件夹中

Veep

使用文件.bat

有什么帮助吗?

【问题讨论】:

  • 我想重新排序文件夹中的一长串 torrent 文件,但我无法手动操作,因为我有超过 10000 个文件,并且名称如上所示
  • 到目前为止,您尝试过哪些代码?您的问题中没有代码可以提供帮助。在没有看到您已经尝试过的情况下,我们无法为您提供太多帮助。见stackoverflow.com/help/mcve

标签: file batch-file


【解决方案1】:

我能想到的最简单的解决方案是使用字符串替换。请注意,如果您的目录具有匹配的子字符串,例如:

Veep
Veeponic

虽然它不是一个完美的解决方案,而且如果目录很多的话成本很高,但它可能会给你一个开始。

它接收你想要处理的目录作为参数%1:

@echo off
setlocal enabledelayedexpansion
pushd %1
for /F "USEBACKQ tokens=*" %%a in (`dir /b /a:-d`) do (
    set "_file=%%a"
    for /D %%b in (*) do (
        if NOT "x!_file:%%b=!" == "x!_file!" (
            echo moving "%%a" to %%b
        )
    )
)
popd

将其另存为 my_batch.bat 并假设您的文件/文件夹位于 C:\songs\ 中,使用 my_batch C:\songs\ 从 cmd 调用它。输出将是

moving Valentina S01e01-13 to Valentina
moving Valeria Medico Legale S01-02e01-16 to Valeria
... and so on

用正确的move 命令替换echo 行,例如move "%%a" %%b

编辑:它应该适用于名称中包含空格的目录。

【讨论】:

  • 我尝试运行该命令,但没有任何反应。应该怎么办?
  • @SuperSonic 查看编辑。同样,当进程中有太多目录时,这可能不是很有效,但这是一个开始。
  • 似乎有些不对劲。请看HERE
  • 对不起,这里有一些误解......你不应该双击它,你应该从PROMPT调用它,传递目录作为参数......你可以把脚本放在任何电脑中的文件夹。我也忘了把setlocal enabledelayedexpansion(我的错)。见已编辑。如果要双击它,则应将pushd %1 编辑为pushd C:\songs\ 或文件所在的路径。如果从与文件相同的目录运行脚本,您可以注释 pushdpopd 行。
  • 我现在尝试这两种方法,但提示和双击传递不起作用:从命令它告诉我:命令的语法不正确。 LOOK
猜你喜欢
  • 2011-02-14
  • 2022-08-10
  • 2016-09-03
  • 2018-03-28
  • 2016-03-30
  • 1970-01-01
  • 2022-08-21
  • 1970-01-01
  • 2016-06-23
相关资源
最近更新 更多