根据文件名子字符串创建目录,并将文件移动到其中



我需要一些帮助来自动化一个枯燥的过程。

我正在收集双语文本,我使用前缀来指定给定文本包含的语言。

示例列表如下所示:

IT 6875.pdf
EN 6875.pdf
IT sT5ezt.pdf
EN sT5ezt.pdf

然后为某个文件对手动创建单独的文件夹。输出为:

6875
---IT 6875.pdf
---EN 6875.pdf
sT5ezt
---IT sT5ezt.pdf
---EN sT5ezt.pdf

我发现了一种自动创建文件夹的方法,通过使用名为" organization .bat"放在目标目录中。我可以为每个文件创建一个文件夹,并将文件移动到它的文件夹中。然而,这只在我不处理双语文件对,而是处理包含两种语言的文件的情况下有用,我稍后将其编辑成两个文件。

这个过程的语法是:
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni" && move "%%~i" "%%~ni"
)
)

我现在希望使这个任务适应上面提到的过程。

  1. 跳过"或";EN"前缀
  2. 选择前缀后的整个文件名,直到扩展名为。pdf
  3. 创建并命名此选择文件夹
  4. 移动文件对到文件夹

在尝试了许多不同的选项之后,我在这里找到了,我决定发布这个查询,因为我不能把我的头围绕这个

if not "%%~ni" == "organize" (
for /f "tokens=1*" %%b in ("%%~ni") do (
md "%%~c" 2>nul
move "%%~i" "%%~c"
)
)

文件的名称部分(例如。使用空格作为分隔符(默认情况下)对IT 6875进行标记,将%%b设置为IT,将%%c设置为6875

从提示符中查看for /?以获得更多详细信息-或在SO上的许多示例。

2>nul确保下一个遇到的6875不会引发一个可见的directory already exists错误消息。

最新更新