windows - 使用批处理文件复制名称仅包含数字的文件

标签 windows batch-file file-management

我有一个具有深层目录->子目录树结构的目录。我需要编写一个批处理文件来从所有子目录中复制所有带编号的文件(名称为数字且没有字母字符的文件)。

例如,子目录可能包含以下文件:

  • WR10091.txt
  • AX10091.htm
  • 10091.txt
  • AX10091.xml
  • 10091.xml

我需要将 10091.txt 和 10091.xml 复制到另一个位置。我可以通过指定 AX*.* 来复制 AX10091.xml 和 AX10091.htm 等文件。但我无法弄清楚如何复制没有字母字符的编号文件。有数千个目录,目录结构没有任何模式(树分支的深度可以有很大差异)。

我们将不胜感激。

最佳答案

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "source=%cd%"
    set "target=x:\target\folder"

    for /r "%source%" %%a in (*) do (
        (for /f "delims=0123456789" %%b in ("%%~na") do (
            break
        )) || echo copy "%%~fa" "%target%"
    )

在此代码中,for %%a 将遍历指定文件夹下的所有文件。对于它们中的每一个,for/f %%b 将尝试使用数字作为分隔符来标记文件名 (%%~na)。如果文件名只包含数字,则不会有任何处理(只有分隔符)并且内部 for 会提高错误级别。这通过条件执行进行检查(如果前一个命令失败,则执行 || 之后的代码),如果错误级别提高,则 copy 操作将回显到控制台。

如果输出正确,移除echo执行复制。

注意:包含内部 for 循环中的 break 只是为了让一个命令在非数字名称的文件被删除时不执行任何操作找到了。

关于windows - 使用批处理文件复制名称仅包含数字的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298040/

相关文章:

python - 在 Python 中获取文件关联

windows - 为什么Windows中安装的git bash在后台运行脚本?

Python:在 Windows 上启动新的命令提示符并等待它完成/退出

windows - 发生错误时跳过

batch-file - 使用imagemagick批量处理图像以减小图像尺寸

file-management - Hashicorp Vault 用于文件存储?

python - 写代码有问题还是Python写代码有问题?

linux - 使用 bash 命令删除除少数文件外的所有文件

c - SetWindowPos() 在转换对话框单位时设置了错误的大小?

java - com.ibm.db2.jcc.am.io : DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884