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

[文本处理] 【已解决】批处理如何去除文件名最后几位指定字符?

本帖最后由 purehu 于 2022-6-29 11:31 编辑

我的问题有点奇怪,试了多种方法了,还是不完美。特请教各位,感激不尽!

同一目录下有多个文件,文件名诸如:
123456 (2).pdf
qq(2)123456 (2).pdf
autocad说明书 (2).doc
C++从入门到入土 (2).pptx
参考(2)资料 (2).dxf
项目节点 (2).xls


只需要批量去掉文件名中最后面的  (2)  <注意,(前有空格>     其余地方的 (2)需要保留

最后希望得到的文件名如下:
123456.pdf
qq(2)123456.pdf
autocad说明书.doc
C从入门到入土.pptx
参考(2)资料.dxf
项目节点.xls

受教了,感谢指导

TOP

回复 20# aloha20200628


感谢大神指导!!!
在大家的无私帮助下,代码质量越来越高了!

TOP

建议使用一个更准确的判据...代码如下(代码脚本须与被更名文件同目录):
@echo off &setlocal EnableDelayedExpansion
for /f "delims=" %%F in (' dir/b/a-d "* (2).*" ') do (
     set "fn=%%~nF"
     if "!fn:~-4!" == " (2)" (ren "%%F" "!fn:~,-4!%%~xF!")
)

TOP

回复 15# yyz219
漏写了一个百分号。
代码第5行“%~xa”改为“%%~xa”

TOP

回复 14# yyz219


    再次感谢!新代码确实更好用

TOP

回复 10# qixiaobin0715


    感谢指导!!!

TOP

不要谢

如果问题已经解决,麻烦编辑主题为:【已解决】
yyz219 发表于 2022-6-29 08:13



  

TOP

回复 10# qixiaobin0715


    我运行这些代码,没有反应哦
我是小白,希望老师多多帮助

TOP

回复 1# purehu


    经 qixiaobin0715  提醒,代码 move 应该改为  ren,变为下面的才完善【否则,子文件夹中符合条件的文件,会移动到批处理目录】
  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" ren "%%i" "!FN: (2).=.!")
  7. pause >nul
复制代码
我是小白,希望老师多多帮助

TOP

回复  yyz219
如果用dir/s包含子文件夹中的文件,这样使用move命令是不合适的,会把子文件夹中的文件移动 ...
qixiaobin0715 发表于 2022-6-29 09:20


受教了,感谢指导
我是小白,希望老师多多帮助

TOP

本帖最后由 qixiaobin0715 于 2022-6-29 10:39 编辑

回复 4# yyz219
如果用dir/s包含子文件夹中的文件,这样使用move命令是不合适的,会把子文件夹中的文件移动到当前文件夹。
若是非要使用move命令的话,需要加上路径:
  1. move "%%i" "%%~dpi!FN: (2)%%~xi=%%~xi!"
复制代码
重命名如果没有特殊情况还是使用ren的好。

TOP

回复 9# yyz219
开始没仔细看,用列举法最好,或者像楼上的方法。

TOP

回复 2# purehu
方法一可以这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /a-d "* (2).????"') do (
  4.     set str=%%~na
  5.     if not "%~xa"==".bat" ren "%%a" "!str:~,-4!%%~xa"
  6. )
  7. pause
复制代码
dir过滤一下,只查找文件名以“ (2)”结尾的文件,以防ren误将其他文件重命名。

TOP

回复 9# qixiaobin0715


    他需要修改的文件,就是有几个不同的后缀的哦
我是小白,希望老师多多帮助

TOP

返回列表