You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMD脚本编写求助:如何排除已复制文件实现分类复制

CMD脚本修复:按规则分类复制System32文件

修复后的完整脚本

@echo off
setlocal enabledelayedexpansion

echo 请输入主文件夹名称
set /P main=
echo 请输入子文件夹前缀名称
set /P subfolder=

:: 清理已存在的主文件夹(不存在则忽略报错)
rd /s /q "C:\Users\tomek\Desktop\%main%" 2>nul
:: 创建主文件夹及10个子文件夹
mkdir "C:\Users\tomek\Desktop\%main%"
for /L %%D in (1,1,10) do (
    mkdir "C:\Users\tomek\Desktop\%main%\%subfolder%_%%D"
)

:: 复制a开头的DLL到第1个子文件夹
for %%Z in ("C:\Windows\System32\a*.dll") do (
    copy "%%Z" "C:\Users\tomek\Desktop\%main%\%subfolder%_1"
)

:: 复制b开头的DLL到第2个子文件夹
for %%X in ("C:\Windows\System32\b*.dll") do (
    copy "%%X" "C:\Users\tomek\Desktop\%main%\%subfolder%_2"
)

:: 复制剩余DLL到第10个子文件夹(排除a、b开头的文件)
for %%Y in ("C:\Windows\System32\*.dll") do (
    set "filename=%%~nY"
    if not "!filename:~0,1!"=="a" if not "!filename:~0,1!"=="b" (
        copy "%%Y" "C:\Users\tomek\Desktop\%main%\%subfolder%_10"
    )
)

endlocal

关键修改说明

  • 开启延迟变量扩展:添加setlocal enabledelayedexpansion,解决for循环内动态变量解析失败的问题,原来的脚本缺少这一步导致首字符判断失效。
  • 调整文件夹清理时机:把删除旧文件夹的命令移到用户输入主文件夹名称之后,避免变量未赋值引发的错误,同时用2>nul屏蔽不存在文件夹时的报错信息。
  • 统一绝对路径:所有文件操作都使用完整绝对路径,避免相对路径带来的定位混乱,确保脚本在任意目录执行都能正常工作。
  • 完善排除逻辑:最后一步同时判断排除a和b开头的文件,用两个if not串联实现双重过滤,确保只复制未被分类的剩余文件。
  • 优化变量提取:先将文件名提取到单独变量中再做首字符判断,让代码逻辑更清晰易读。

内容的提问来源于stack exchange,提问作者emdez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:17:12