根据文本文件中的第二列创建文件夹,然后相应地将文件移动到其文件夹中

时间:2015-10-10 08:41:27

标签: batch-file directory command-prompt

我从CNC机器收到了数千个要分类的文件。我还有一个索引列出了所有文件及其类别。该列由制表符分隔。以下是索引文件内容的示例:

111.MAZ      AAA FGH
222.MAZ      BBB IYU
333.EIA      CCCDFEW
444.MAZ      AAAWER BB BBBA
555.EIA      AAA 123
666.M6M      DDD234
777.PBD      AAA
.......      .....

因此,我需要做以下事情:

  1. 根据第二列(成功)创建文件夹,使用Excel分隔列,使用以下命令批量创建文件夹:
  2. for / f%d in(list.txt)do md%d

    1. 相应地将我的所有文件传输到他们的文件夹中(?)
    2. 我不确定如何完成第二项任务。有人能指出我正确的方向吗?

      经过一百次的运行和失败,最后,由于@Stephan和@JosefZ,我已成功将所有这些文件分类到各自的文件夹中。我稍微调整了一下代码,以便我只创建文件存在的那些代码。

      for /F "tokens=1,*" %%G in (index.txt) do (
          IF EXIST %%G (
              md "%%~H" 2^>NUL
              move "%%~G" "%%~H"
          )
      )
      

      度过美好的一天!

2 个答案:

答案 0 :(得分:1)

不需要Excel。您可以使用批处理解析索引:

for /f "tokens=1,2 delims=<TAB>" %%a in (index.txt) do (
  REM create Folder, ignore "Folder exists" error:
  echo md "%%b" 2>nul
  REM move the file: 
  echo move "%%a" "%%b"
)

注意:而不是<TAB>在Texteditor中插入Tabulator(记事本?)

如果输出正常,请删除echo

答案 1 :(得分:1)

从命令行开始,假设您的index.txt恰好包含两个以制表符分隔的列 文件名 标签 类别名称
操作mdmove命令仅用于调试目的;在调试之后删除所有echo

for /F "tokens=1,*" %G in ( index.txt ) do @echo md "%~H" 2^>NUL & echo move "%~G" "%~H"

资源(必读):