[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复  yyz219


    实测有效!!!!感谢大神相助
purehu 发表于 2022-6-28 23:15


不要谢

如果问题已经解决,麻烦编辑主题为:【已解决】
我是小白,希望老师多多帮助

TOP

回复 6# yyz219


    实测有效!!!!感谢大神相助

TOP

本帖最后由 yyz219 于 2022-6-28 22:46 编辑

回复 5# purehu


    3楼代码已修改,再试一试
我是小白,希望老师多多帮助

TOP

回复 4# yyz219


    谢谢大神回复,前面的(2)也有空格,被误删了

TOP

本帖最后由 yyz219 于 2022-6-28 22:55 编辑
已尝试方法二
直接替换" (2)"字符,脚本如下:存在问题,因为文件名中可能存在多处" (2)",但我只希望删除 ...
purehu 发表于 2022-6-28 22:03


试一试下面的代码(做好备份哦)
  1. ::【文件名去"最后的 (2)"字符】
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /s /b /a-d *.*') do (
  5.     set "FN=%%~nxi"
  6.     if not "%%i"=="%~0" move "%%i" "!FN: (2).=.!")
  7. pause >nul
复制代码
批处理放到需要修改的文件所在目录【这代码的巧妙之处是:把 (2)后面的 “.” 也加进去,这样就不会删除前面的 (2)】
我是小白,希望老师多多帮助

TOP

已尝试方法二
直接替换" (2)"字符,脚本如下:
  1. SetLocal ENABLEDELAYEDEXPANSION
  2. FOR %%a in (*) do (
  3. ::pause
  4. set "name=%%a"
  5. set "name=!name: (2)=!"
  6. ::set "name=!name: (=!"
  7. ::set "name=!name=!"
  8. ren "%%a" "!name!"
  9. )
复制代码
存在问题,因为文件名中可能存在多处" (2)",但我只希望删除文件最后的一处,因此存在误删的可能

TOP

本帖最后由 purehu 于 2022-6-28 22:03 编辑

已尝试方法一
穷举每一种文件类型,例如pdf文件,采用如下脚本
  1. setlocal enabledelayedexpansion
  2. for %%f in (*.pdf) do (
  3. pause
  4. echo %%f
  5. set name=%%f
  6. ren !name! !name:~0,-8%!.pdf
  7. )
复制代码
存在问题:因为文件名中存在空格,无法有效的删除指定位置的“ (2)”四位字符

TOP

返回列表