【问题标题】:copy file based on content - command prompt根据内容复制文件 - 命令提示符
【发布时间】:2024-01-01 13:59:01
【问题描述】:

我有一个文件夹,里面有一堆文件。每个文件名都有唯一的日期例如:20140101。每个文件都有一个产品的数据.. 例如:20140101 有产品“橙子”的数据文件 20140102 有产品“苹果”的数据..我需要创建一个脚本来检查文件的内容,如果找到匹配,将文件复制到不同的目录。

例子:

在 C:\数据\

找到 2 个文件 .. 20131229 和 20140101

将文件复制到 c:\oranges\

提前致谢。

【问题讨论】:

    标签: windows copy command prompt


    【解决方案1】:
    @echo off
    
        setlocal enableextensions disabledelayedexpansion
    
        set "source=c:\data\*.*"
        set "target=c:\"
        set "classes=orange apple"
    
    for %%c in (%classes%) do (
        if not exist "%target%%%c\" md "%target%%%c\"
        for /f "delims=" %%f in ('findstr /m /l /c:"%%c" "%source%"') do (
            copy "%%~ff" "%target%%%c\"
        )
    )
    

    对于每个指定的类,如果不存在则创建目标目录,对于每个具有指定内容的文件,将其移动到适当的目录(未测试,根据需要调整)

    【讨论】:

    • 谢谢。这很有帮助。但我现在有不同的问题。很少有文件包含有关 Oranges 和 Apple 的详细信息。如果我们在每个文件中找到多个条目,在搜索时有什么方法,脚本将复制相应的行并将其粘贴到目标文件夹中创建的文件中作为源文件名?
    • @user3346080,将copy行替换为findstr /l /c:"%%c" "%%~ff" > "%target%%%c\%%~nxf"