Board logo

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

作者: 草旺角    时间: 2020-11-16 02:48     标题: 【已解决】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,不知怎么改进这个批处理呢?
另外想求教下如何改进这个批处理使其能批量去掉文件名某个字符后的内容呢?
作者: qixiaobin0715    时间: 2020-11-16 06:57

回复 1# 草旺角

命名时再加上就行。
ren "%%i" "!FileName!"
改为
ren "%%i" "%str%!FileName!"
作者: ivor    时间: 2020-11-16 09:15

本帖最后由 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}
复制代码

作者: qixiaobin0715    时间: 2020-11-16 10:27

本帖最后由 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
复制代码

作者: yhcfsr    时间: 2020-11-16 12:07

回复 1# 草旺角


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

作者: qixiaobin0715    时间: 2020-11-16 13:15

回复 5# yhcfsr

这样修改好,非常直观。
作者: 草旺角    时间: 2020-11-16 14:22

回复 2# qixiaobin0715


非常感谢
作者: 草旺角    时间: 2020-11-16 14:22

回复 4# qixiaobin0715


  非常感谢
作者: 草旺角    时间: 2020-11-16 14:22

回复 5# yhcfsr


  非常感谢
作者: 草旺角    时间: 2020-11-16 14:23

回复 5# yhcfsr
作者: 草旺角    时间: 2020-11-16 14:24

回复 3# ivor


    非常感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2