Board logo

标题: [文件操作] 批处理如何批量删除文件夹名中特定字符串前的所有字符? [打印本页]

作者: h8063315    时间: 2016-5-30 02:07     标题: 批处理如何批量删除文件夹名中特定字符串前的所有字符?

本帖最后由 pcl_test 于 2016-5-31 20:28 编辑

我有一大批的文件夹,是文件夹,不是文件,文件夹需要改名字,因为原来的名字太才了


代理价  140∕双  36-44 耐克王土豪金(1577)
代理价 120∕双 36-40 MAX 87 帆白棕褐色(1405)
代理价 120∕双 36-40 MAX 87 深兰白金(1468)
代理价 120∕双 36-40 MAX 87 深宝兰钻石兰超级粉顶峰白(1458)
代理价 120∕双 36-40 MAX 87 灰紫白粉红(1437)
代理价 120∕双 36-40 MAX 87 玫红橙色(1451)
代理价 120∕双 36-40 MAX 87 白铁矿色碧绿(1389)

现在我想批量处理,只保留后面的编号
(1577)
(1405)
(1468)
(1458)
(1437)
(1451)
(1389)
这样,就是保留后6位字符
求帮助
作者: heyoug    时间: 2016-5-30 13:47

如果用括号中间的4位数字做文件名行,加括号不好弄...
作者: pcl_test    时间: 2016-5-30 20:58

举个栗子
  1. @echo off
  2. for /f "tokens=1*delims=(" %%a in ('more +5 "%~f0"') do (
  3.     echo;ren "%%a(%%b" "(%%b"
  4. )
  5. pause&exit
  6. 代理价  140∕双  36-44 耐克王土豪金(1577)
  7. 代理价 120∕双 36-40 MAX 87 帆白棕褐色(1405)
复制代码

作者: pcl_test    时间: 2016-5-30 21:00

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('more +6 "%~f0"') do (
  3.     set "str=%%a"
  4.     echo;ren "%%a" "!str:~-6!"
  5. )
  6. pause&exit
  7. 代理价  140∕双  36-44 耐克王土豪金(1577)
  8. 代理价 120∕双 36-40 MAX 87 帆白棕褐色(1405)
复制代码

作者: chenkangone    时间: 2016-5-31 15:02

@echo off
for /R d:\leanbat\test %%a in (.) do (
for /f "delims=( tokens=2" %%i in ("%%~na") do (ren %%~dpa"%%~na" ^(%%i)
)
作者: chenkangone    时间: 2016-5-31 15:03

最近学了两天bat,不知道有没有更简便的方法
作者: gawk    时间: 2016-6-1 22:29

回复 6# chenkangone


    “保留后6位字符”是set命令截取字符串的应用场景之一,可以参考4楼代码的第四行。




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