找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18588|回复: 4

[文件操作] 为何批处理加/s为何不能实现子孙件名【相似词】替换成【同一词】?

[复制链接]
发表于 2022-9-25 06:45:32 | 显示全部楼层 |阅读模式
大神求助!以下代码为何加/s为何不能实现子孙件名【相似词】替换成【同一词】?
@echo off
set key=降低 减少 减弱
setlocal enabledelayedexpansion
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b 【/s】 /a-d ^| findstr /i "%key%" ^| findstr /v /x "%~nx0"') do (
    set "NewName=%%i"
    for %%a in (%key%) do (
        set NewName=!NewName:%%a=↘!
    )
    ren "%%i" "!NewName!"
)
发表于 2022-9-25 07:43:57 | 显示全部楼层
本帖最后由 hfxiang 于 2022-9-25 08:48 编辑

无测试大环境,故未经测试

  1. @echo off
  2. set key = 降低 减少 减弱
  3. setlocal enabledelayedexpansion
  4. cd /d "%~dp0"
  5. for /f "delims=" %%i in ('dir /b /s /a-d ^| findstr /i "%key%" ^| findstr /v /x "%~nx0"') do (
  6.     set "NewName=%%~ni"
  7.     for %%a in (%key%) do (
  8.         set NewName=!NewName:%%a=↘!
  9.         set NewName=%%~dpi!NewName!%%~xi
  10.     )
  11.     move /y "%%~fi" "!NewName!"
  12. )
复制代码
发表于 2022-9-25 08:43:06 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-9-25 09:04 编辑

ren命令中,原文件名(前面部分)需要带路径(除非文件在当前目录中),新文件名(后面部分)只是你要修改的文件名,不能带路径。
顶楼代码管道命令太多,会降低代码运行效率。你不会连批处理文件名也非要起名含有“降低 减少 减弱”之类的吧,试试下面代码:
  1. @echo off
  2. set key=降低 减少 减弱
  3. setlocal enabledelayedexpansion
  4. for %%a in (%key%) do set var=!var! *%%a*
  5. cd /d "%~dp0"
  6. for /f "delims=" %%i in ('dir /b /s /a-d %var%') do (
  7.     set "NewName=%%~nxi"
  8.     for %%a in (%key%) do (
  9.         set NewName=!NewName:%%a=↘!
  10.     )
  11.     ren "%%i" "!NewName!"
  12. )
复制代码
 楼主| 发表于 2022-9-25 16:06:24 | 显示全部楼层
回复 3# qixiaobin0715


    感谢大神相助!代码经测好用!
 楼主| 发表于 2022-9-25 16:09:46 | 显示全部楼层
回复 2# hfxiang


    谢谢帮助,代码经测试文件名的关键词没被修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:32 , Processed in 0.017187 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表