purehu 当前离线
列兵
setlocal enabledelayedexpansion for %%f in (*.pdf) do ( pause echo %%f set name=%%f ren !name! !name:~0,-8%!.pdf )复制代码
TOP
SetLocal ENABLEDELAYEDEXPANSION FOR %%a in (*) do ( ::pause set "name=%%a" set "name=!name: (2)=!" ::set "name=!name: (=!" ::set "name=!name=!" ren "%%a" "!name!" )复制代码
yyz219 当前离线
中尉
已尝试方法二 直接替换" (2)"字符,脚本如下:存在问题,因为文件名中可能存在多处" (2)",但我只希望删除 ... purehu 发表于 2022-6-28 22:03
::【文件名去"最后的 (2)"字符】 @echo off setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /s /b /a-d *.*') do ( set "FN=%%~nxi" if not "%%i"=="%~0" move "%%i" "!FN: (2).=.!") pause >nul复制代码
回复 yyz219 实测有效!!!!感谢大神相助 purehu 发表于 2022-6-28 23:15
qixiaobin0715 当前离线
大校
@echo off setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /b /a-d "* (2).????"') do ( set str=%%~na if not "%~xa"==".bat" ren "%%a" "!str:~,-4!%%~xa" ) pause复制代码
move "%%i" "%%~dpi!FN: (2)%%~xi=%%~xi!"复制代码
回复 yyz219 如果用dir/s包含子文件夹中的文件,这样使用move命令是不合适的,会把子文件夹中的文件移动 ... qixiaobin0715 发表于 2022-6-29 09:20
::【文件名去"最后的 (2)"字符】 @echo off setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /s /b /a-d *.*') do ( set "FN=%%~nxi" if not "%%i"=="%~0" ren "%%i" "!FN: (2).=.!") pause >nul复制代码