【问题标题】:About Batch files (Programming)关于批处理文件(编程)
【发布时间】:2012-09-04 16:25:06
【问题描述】:

我正在编写一个批处理文件 逐一验证目录中的 .txt 文件, 如果一个文件是重复的,那么这个重复文件 被移动到另一个目录。 谁能告诉我是否确实存在更多 比这样做快吗?

提前致谢!

【问题讨论】:

  • 嘿,你有关于你想怎么做和做什么的小样本(批次)吗?嗯...基本上我还建议您使用比批处理更强大的脚本语言来执行文件操作。使用其他编程语言,如 python、ruby、powershell ......处理文件的挑战要容易得多。
  • 如果只勾选“a”(一个)目录,则不会有重复的文件名。
  • 你不能有重复的文件,同一文件夹中的文件名必须是唯一的。

标签: windows file batch-file


【解决方案1】:

假设您的意思是要比较文本文件的内容,而不是名称:

@echo off
setlocal enabledelayedexpansion
for %%x in (*.txt) do for %%y in (*.txt) do (
  if "%%~x" neq "%%~y" (
    echo n | comp "%%~x" "%%~y"
    if !errorlecel!==0 (
      echo Duplicat found.
      set newDir=%%~nx_Duplicate
      if not exist "!newDir!" md "!newDir!"
      move "%%~y" "!newDir!"
    )
  )
)

上面的代码将搜索每个文件的重复项并将它们放在一个名为 FILENAME_Duplicate 的目录中。因此,如果它比较 thisfile.txtthatfile.txt 并发现它们是重复的,它将把 thatfile.txt 移动到一个名为 thisfile_Duplicate 的目录中。

【讨论】:

    【解决方案2】:

    使用 md5sum (http://en.wikipedia.org/wiki/Md5sum) 创建所有文件的校验和,并比较校验和而不是文件。会快很多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-26
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2011-07-17
      • 2017-11-28
      相关资源
      最近更新 更多