标题: [文件操作] 为何批处理加/s为何不能实现子孙件名【相似词】替换成【同一词】? [打印本页]
作者: youxianwei 时间: 2022-9-25 06:45 标题: 为何批处理加/s为何不能实现子孙件名【相似词】替换成【同一词】?
大神求助!以下代码为何加/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!"
)
作者: hfxiang 时间: 2022-9-25 07:43
本帖最后由 hfxiang 于 2022-9-25 08:48 编辑
无测试大环境,故未经测试- @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=%%~ni"
- for %%a in (%key%) do (
- set NewName=!NewName:%%a=↘!
- set NewName=%%~dpi!NewName!%%~xi
- )
- move /y "%%~fi" "!NewName!"
- )
复制代码
作者: qixiaobin0715 时间: 2022-9-25 08:43
本帖最后由 qixiaobin0715 于 2022-9-25 09:04 编辑
ren命令中,原文件名(前面部分)需要带路径(除非文件在当前目录中),新文件名(后面部分)只是你要修改的文件名,不能带路径。
顶楼代码管道命令太多,会降低代码运行效率。你不会连批处理文件名也非要起名含有“降低 减少 减弱”之类的吧,试试下面代码:- @echo off
- set key=降低 减少 减弱
- setlocal enabledelayedexpansion
- for %%a in (%key%) do set var=!var! *%%a*
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /s /a-d %var%') do (
- set "NewName=%%~nxi"
- for %%a in (%key%) do (
- set NewName=!NewName:%%a=↘!
- )
- ren "%%i" "!NewName!"
- )
复制代码
作者: youxianwei 时间: 2022-9-25 16:06
回复 3# qixiaobin0715
感谢大神相助!代码经测好用!
作者: youxianwei 时间: 2022-9-25 16:09
回复 2# hfxiang
谢谢帮助,代码经测试文件名的关键词没被修改
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |