用于移动与另一个文件名部分匹配的文件的脚本

用于移动与另一个文件名部分匹配的文件的脚本

我正在尝试弄清楚如何编写一个脚本来获取如下文件:

img123
img123back
img124
img125
img125back
img126
img127

我需要将所有与带有“back”字样的文件具有相同编号的文件移动到单独的文件夹中。结果示例:

img123
img123back
img125
img125back

答案1

您可以使用对于/f迭代输出目录命令针对源目录。您可以使用一些条件如果逻辑和循环变量替换来确认具有单个字符串“back”的文件存在,如果存在,则复制该文件以及具有相同名称的文件减去相应的字符串。

@ECHO ON

SET "srcPath=C:\Source\Path"
SET "destPath=C:\Copy\Path"
SET "keyword=back"

FOR /F "TOKENS=*" %%A IN ('DIR /B /A-D "%srcPath%\*"') DO (
    IF EXIST "%%~DPA%%~NA%keyword%%%~XA" XCOPY /Y /F "%%~DPA%%~NA%keyword%%%~XA" "%destPath%\" & XCOPY /Y /F "%%~FNXA" "%destPath%\"
    )
PAUSE
EXIT

更多资源

  • 对于/F
  • 目录
  • 如果

  • 批量替换 (FOR /?)

    此外,FOR 变量引用的替换功能也得到了增强。现在您可以使用以下可选语法:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    
  • 复制

  • 重定向

相关内容