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

[文本处理] 如何批量删除文件名最后两个字符之前的所有字符并以递增序号的方式处理重名文件?

本帖最后由 pcl_test 于 2016-4-15 22:45 编辑

有很多txt文件:
123.txt
1234.txt
12345.txt
……
----------------
只想保留文件名最后两个字:
23.txt
34.txt
45.txt
……

-------------------
大侠,如何实现

本帖最后由 ivor 于 2016-2-20 12:50 编辑

回复 1# wzf1024
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b *.txt') do (
  3. set "name=%%a"
  4. rename "%%a" !name:~-6!
  5. )
  6. pause
复制代码
代码很容易,但是你的文件很多,只留两个字符,很容易会文件名重复


刚出炉的新代码:有多少重复的都没问题
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b *.txt') do (
  3. set "name=%%a"
  4. rename "%%a" "!name:~-6!" 2>nul || call :repeat
  5. )
  6. echo 已经全部处理...... & pause>nul
  7. goto :EOF
  8. :repeat
  9. set /a num+=1
  10. rename "!name!" "!name:~-6,2!(!num!)!name:~-4!" && goto :EOF || goto :repeat
复制代码
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

  1. ren2 -f ".*(..)(\.txt)" "$1$2"
复制代码
1

评分人数

TOP

回复 2# ivor


    原来的条件,如果需要在出现重复文件名时后面加递增序号如何解决,
如:
1234.txt
2234.txt
替换后:
34.txt
34(1).txt

--------------------
如何实现、谢谢

TOP

回复 3# bailong360


    大侠,这不是批处理吧,需要什么软件吗?谢谢

TOP

回复 2# ivor


    -6好像不对吧

TOP

回复 5# wzf1024
第三方ren2

TOP

本帖最后由 ivor 于 2016-2-20 12:55 编辑

回复 1# wzf1024


    2楼代码已更新

顺便附带测试专用代码
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 测试专用,生成100个xxxx66.txt
  3. for /l %%a in (1,1,100) do (
  4. echo.>!random!66.txt
  5. )
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 6# CrLf


    没错啊,我都测试过了
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 9# ivor


    噢,是我晕了,还要算上 .

TOP

返回列表