标题: [文本处理] 批处理如何删除字符串前三位的固定字符,删除后6位的数字? [打印本页]
作者: grain99 时间: 2022-10-16 14:18 标题: 批处理如何删除字符串前三位的固定字符,删除后6位的数字?
eg:
#听过吗,这是一个动人的#歌曲-234769.MP3 变成=》 听过吗,这是一个动人的#歌曲-.MP3
哈哈#是的,我喜欢这个#很不错-414321.MP3 变成=》 哈哈是的,我喜欢这个#很不错-.MP3
【删除前三位字符中的#号! 删除后六位随机数字】
感谢!感谢!感谢!
作者: hlzj88 时间: 2022-10-16 15:09
本帖最后由 hlzj88 于 2022-10-16 15:14 编辑
- @echo off&&setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=-" %%i in ('dir /b/on *.mp3') do (
- set "wj=%%i"
- set qs=!wj:~0,4!
- set qs=!qs:#=!
- set wj=!wj:~4!
- move /y "%%i-%%j" !qs!!wj!.mp3
- )
- pause
复制代码
作者: aloha20200628 时间: 2022-10-16 16:10
a.txt
#听过吗,这是一个动人的#歌曲-234769.MP3
哈哈#是的,我喜欢这个#很不错-414321.MP3- @echo off
- for /f "tokens=1-4 delims=,-." %%1 in (a.txt) do for /f "tokens=1-2 delims=#" %%a in ("%%1") do echo,%%a%%b,%%2-.%%4
复制代码
作者: grain99 时间: 2022-10-16 17:23
回复 2# hlzj88
执行出错……
作者: xp3000 时间: 2022-10-16 18:18
本帖最后由 xp3000 于 2022-10-16 18:24 编辑
- @if (0)==(0) echo off
-
- dir /b *.ape *.flac *.wav *.mp3 | cscript -nologo -e:jscript "%~0"
- pause&exit/b
- @end
-
- fso = new ActiveXObject("Scripting.FileSystemObject");
- while (!WSH.StdIn.AtEndOfStream) {
- line = WSH.StdIn.ReadLine();
- f=fso.GetFile(line);
- s1= line.replace(/^(.{3})[^\.]+\..+$/mg, '$1').replace(/#/mg, '');
- s2= line.replace(/^.{3}([^\.]+\..+)$/mg, '$1').replace(/-[^\.]{6}/g, '-');
- if(fso.FileExists(s1+s2))
- WScript.Echo('\n文件: ' +line+'命名失败!\n')
- else
- f.Move(s1+s2);
- }
复制代码
作者: hlzj88 时间: 2022-10-16 18:25
回复 4# grain99
我测试没有问题,win7。你可以把 move /y 替换为echo 看看什么情况
作者: 小白龙 时间: 2022-10-16 18:47
回复 6# hlzj88 - #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
-
- gci *.mp3 |
- foreach {
- $a = $_.BaseName.ToCharArray()
- $a1 = $a[0 .. 2] -replace '#'
- $a2 = $a[3 .. ($a.Count - 7)]
-
- $nn = (-join $a1) + (-join $a2)
-
- ren $_ -NewName $($nn + $_.Extension)
- }
复制代码
作者: qixiaobin0715 时间: 2022-10-17 09:11
楼主应当将需求表达清楚些,君不见大家的理解各不相同。
有人理解为是文件;
有人理解为是文本文件中的内容;
而按楼主的说法是字符串。
到底是什么呢?
作者: Batcher 时间: 2022-10-17 10:06
回复 4# grain99
请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
如果仍然看不到报错信息,请把你测试用的文件和bat脚本打包上传到网盘以便他人帮忙排查。
作者: qixiaobin0715 时间: 2022-10-19 10:24
本帖最后由 qixiaobin0715 于 2022-10-19 10:30 编辑
如果按字符串处理:- @echo off
- setlocal enabledelayedexpansion
- for %%a in (#听过吗,这是一个动人的#歌曲-234769.MP3
- 哈哈#是的,我喜欢这个#很不错-414321.MP3) do (
- set str=%%a
- set str1=!str:~,3!
- echo,!str1:#=!!str:~3,-10!!str:~-4!
- )
- pause
复制代码
作者: hfxiang 时间: 2022-10-19 11:02
- @echo off
- rem 保存为ANSI格式
- setlocal enableDelayedExpansion
- for /f %%a in ('dir /b/s *.mp3') do (
- set "fn=%%~na"
- set "pn=!fn:~,3!"
- move /y "%%~a" "%%~dpa!pn:#=!!fn:~3,-6!%%~xa"
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |