标题: [文件操作] 批处理如何在数字与文字之间添加指定字符? [打印本页]
作者: pujizhongxue 时间: 2016-1-30 19:00 标题: 批处理如何在数字与文字之间添加指定字符?
我有一批文件,命名如此:1.1.2海燕;1.2.1社戏,我想改成1.1.2《海燕》;1.2.1《社戏》,请问该怎样操作呢?
作者: hlzj88 时间: 2016-1-30 20:18
文件都是有后缀的,你上面没说,假设为txt- @echo off&&setlocal enabledelayedexpansion
- for /f "tokens=1,2,3 delims=." %%i in ('dir /b/on *.txt') do (
- set "pp=%%k》"
- set pp=!pp:1=1《!
- set pp=!pp:2=2《!
- set pp=!pp:3=3《!
- set pp=!pp:4=4《!
- set pp=!pp:5=5《!
- set pp=!pp:6=6《!
- set pp=!pp:7=7《!
- set pp=!pp:8=8《!
- set pp=!pp:9=9《!
- ren %%i.%%j.%%k.txt %%i.%%j.!pp!.txt
- )
- pause
复制代码
作者: pujizhongxue 时间: 2016-1-30 20:24
谢谢,不过如果文件名有2.1.10海鸥这种情况该怎么办呢?
作者: pujizhongxue 时间: 2016-1-30 20:25
本帖最后由 pujizhongxue 于 2016-1-30 20:26 编辑
谢谢,如果文件名像3.10海鸥这种情况该怎么办呢?
作者: hlzj88 时间: 2016-1-30 20:43
在里面添一句
set pp=!pp:10=10《!
作者: codegay 时间: 2016-1-30 20:45
文件名出现了1只小老鼠。
作者: codegay 时间: 2016-1-30 20:47
正则表达式重命名工具。
作者: pujizhongxue 时间: 2016-1-30 20:51
我表述不太清楚,假如文件名汉字前面的序号是1.5,2.10,3.1.11,3.1.12甚至3.1.80这样的情况该怎么办啊!总不能一直加到80吧!而且序号位数不同又该怎么处理呢?多谢!
作者: pcl_test 时间: 2016-1-30 20:57
第三方- ren2 -f "(\d[\.\d]*)(.+)(\.[^\.]+)" "$1《$2》$3"
复制代码
作者: hlzj88 时间: 2016-1-30 21:07
本帖最后由 hlzj88 于 2016-1-30 21:09 编辑
高深的代码搞不了,,好在有更高手来答了
作者: WHY 时间: 2016-1-30 22:22
本帖最后由 WHY 于 2016-1-31 22:48 编辑
test.bat- @if (0)==(0) echo off
- for /f "delims=" %%i in ('dir /b /a-d^|cscript //nologo //e:jscript "%~f0"') do ren %%i
- pause & exit
- @end
-
- var arr = WSH.StdIn.ReadAll().split('\r\n');
- var reg = /^((\d+\.)+\d+)([^《》]+?)(\.[^.]+)?$/;
- for(var i in arr){
- if(reg.test(arr[i])) WSH.Echo(arr[i].replace(reg, '"$&" "$1《$3》$4"'));
- }
复制代码
作者: WHY 时间: 2016-1-30 22:23
本帖最后由 WHY 于 2016-1-31 22:50 编辑
test.ps1
右键使用PowerShell运行- dir | foreach-Object{
- if($_ -is [System.IO.FileInfo]){
- $name = $_.name -replace '^((\d+\.)+\d+)([^《》]+?)(\.[^.]+)?$', '$1《$3》$4'
- ren -Path $_.Get_FullName() -NewName $name
- }
- }
复制代码
作者: codegay 时间: 2016-1-30 22:34
回复 12# WHY
说明一下是powershell会更好。
作者: /zhqsystem/zhq 时间: 2016-1-31 04:52
回复 1# pujizhongxue
- @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
- for /r ".\" %%i in (*.txt)do (set "name=%%~ni"
- for /f "delims=" %%j in ("%%~ni")do (
- set "name_xj=%%~xj"
- for %%k in (0,1,2,3,4,5,6,7,8,9,.)do set "name_xj=!name_xj:%%k=!"
- )
- for /f "delims=" %%j in ("!name_xj!")do set "name=!name:%%j=<<%%j>>!"
- rem:下一行是改变后的名称
- echo,"%%~i" "!name!%%~xi"
- )
- pause
复制代码
作者: pujizhongxue 时间: 2016-1-31 08:46
回复 14# /zhqsystem/zhq
谢谢,我把你的代码把echo,改成ren,结果却提示:文件名、目录名或卷标语法不正确。请问该如何处理啊?
作者: bailong360 时间: 2016-1-31 09:34
本帖最后由 bailong360 于 2016-1-31 17:42 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b *.txt') do (
- set "FileName=%%~ni"
- set "FileName=!FileName:.=$ !"
- set "NewName=$"
- for %%j in (!FileName!) do (
- set "TmpName=%%j"
- if not "!TmpName:~-1!"=="$" (
- for /l %%k in (0 1 9) do set "TmpName=!TmpName:%%k=%%k《!"
- for /l %%k in (0 1 9) do set "TmpName=!TmpName:《%%k=%%k!"
- set "NewName=!NewName!.!TmpName!》"
- ) else set "NewName=!NewName!.!TmpName:~0,-1!"
- )
- echo ren "%%~nxi" "!NewName:$.=!%%~xi"
- )
- pause
复制代码
9楼的第三方解法多方便,又迅速
确认无误后将echo去掉- @for /f "delims=" %%i in ('dir /a-d /b *.txt^|ssed -R "s/([0-9.]+)(.*?)(\.txt)/\"\0\" \"\1《\2》\3\"/g"') do @ren %%i
复制代码
来个ssed的
===========
话说,LZ你的文件是真的没有后缀还是后缀被你省略掉了??
作者: CrLf 时间: 2016-1-31 11:19
本帖最后由 CrLf 于 2016-1-31 13:53 编辑
- @echo off
- for /f "delims=" %%a in ('dir /a-d /b^|findstr "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[^0-9]"') do (
- for /f "tokens=1-3* delims=0123456789" %%b in ("%%~na") do if %%b%%c%%d==... ren "%%a" "%%b.%%c.%%d《%%e》%%~xa"
- )
复制代码
作者: /zhqsystem/zhq 时间: 2016-1-31 14:09
回复 15# pujizhongxue
你建立这个文件名字试试
<<>>
就不能自己找下基本的错误吗,汗
作者: WHY 时间: 2016-1-31 23:26
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d') do (
- for /f "tokens=*delims=0123456789." %%j in ("%%i") do (
- if not "%%i" == "%%j" (
- set "s=%%i"
- echo "%%i" "!s:%%j=!《%%~nj》%%~xj"
- )
- )
- )
- pause
复制代码
作者: pujizhongxue 时间: 2016-2-1 19:42 标题: 批处理如何在数字与文字之间添加指定字符?
本帖最后由 pcl_test 于 2016-2-1 20:02 编辑
怎么解决“文件名、目录名或卷标语法不正确”问题?
我在G:\实验\12.好人>目录下运行如下命令:rename "G:\实验\12.好人\1.1.2暗暗.txt" "1.1.2<<暗暗>>.txt"
却提示文件名、目录名或卷标语法不正确。
请问问题出在什么地方啊?
作者: ygqiang 时间: 2016-2-1 19:48
回复 1# pujizhongxue
rename "G:\实验\12.好人\1.1.2暗暗.txt" "1.1.2(暗暗).txt"
作者: ygqiang 时间: 2016-2-1 19:49
回复 1# pujizhongxue
<<不能放在文件名里面。
作者: pujizhongxue 时间: 2016-2-1 19:51
知道了,是<<应改成《
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |