首页 > 解决方案 > 根据文件名子字符串创建目录并将文件移动到其中

问题描述

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

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

示例列表如下所示:

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

我找到了一种通过使用我放置在目标目录中的名为“organize.bat”的 .bat 文件来自动创建文件夹的方法。我可以为每个文件创建一个文件夹,并将文件移动到其文件夹中。但是,这仅在我不处理双语文件对,而是处理包含两种语言的文件时才有用,我稍后将其编辑为两个文件。

此过程的语法是:

@echo off
for %%i in (*) do (
 if not "%%~ni" == "organize" (
  md "%%~ni" && move "%%~i" "%%~ni"
 )
)

我现在希望将此任务适应上面提到的过程。

  1. 跳过“IT”或“EN”前缀
  2. 选择前缀后的整个文件名,直到扩展名 .pdf
  3. 在此选择后创建并命名文件夹
  4. 将文件对移动到文件夹中

在尝试了我在这里找到的许多不同选项后,我决定发布此查询,因为我无法解决这个问题。

标签: windowsbatch-filewindows-10

解决方案


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

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

for /?从提示中查看更多详细信息 - 或关于 SO 的许多示例。

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


推荐阅读