批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] 【已解决】BAT脚本如何批量去掉文件名某个字符前后的内容

本帖最后由 草旺角 于 2020-11-16 14:27 编辑

我在网上找到一个可以批量去掉文件名某个字符前内容的批处理
如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p str=请输入要删除哪个字符串前的内容:
  4. for %%i in ("*%str%*") do (
  5. set "FileName=%%i"
  6. set "FileName=!FileName:*%str%=!"
  7. echo !FileName!
  8. ren "%%i" "!FileName!"
  9. )
  10. pause
复制代码
但有个缺点,这个批处理在删除时会把我指定的字符一起删除。比如我重命名001abc011.mp4、002abc012.mp4文件时,指定abc字符,但批处理会把abc一起删除,变成011.mp4、012.mp4。而我想保留abc字符只删除前面的,变成abc011.mp4、abc012.mp4,不知怎么改进这个批处理呢?
另外想求教下如何改进这个批处理使其能批量去掉文件名某个字符后的内容呢?

回复 1# 草旺角

命名时再加上就行。
ren "%%i" "!FileName!"
改为
ren "%%i" "%str%!FileName!"

TOP

本帖最后由 ivor 于 2020-11-16 11:10 编辑
  1. #&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit
  2. $deltext="abc"
  3. dir *.* | %{Rename-Item $_ -NewName ($_.name -replace "$deltext","") -verbose}
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

本帖最后由 qixiaobin0715 于 2020-11-16 10:43 编辑

回复 1# 草旺角
删除指定字符后面的字符
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p str=请输入特定字符串:
  4. for %%i in ("*%str%*") do (
  5.     set "FileName=%%i"
  6.     set "FileName1=!FileName:*%str%=!"
  7.     for %%a in ("!FileName1!") do set "FileName=!FileName:%%~na=!"
  8.     ren "%%i" "!FileName!"
  9. )
  10. pause
复制代码

TOP

回复 1# 草旺角


    第6行改为
  1. set "FileName=!FileName:*%str%=%str%!"
复制代码
QQ 33892006

TOP

回复 5# yhcfsr

这样修改好,非常直观。

TOP

回复 2# qixiaobin0715


非常感谢

TOP

回复 4# qixiaobin0715


  非常感谢:handshake

TOP

回复 5# yhcfsr


  非常感谢

TOP

回复 5# yhcfsr

TOP

回复 3# ivor


    非常感谢

TOP

返回列表