标题: [文件操作] 批处理如何提出文件名称中的数字? [打印本页]
作者: 娜美 时间: 2021-11-15 19:37 标题: 批处理如何提出文件名称中的数字?
需要截取文件名称中的数字用来创建新的文本名称, 无论数字在那个位置 或者有多少个数字,只要是和其它字符分隔开的,都要用来创建新的文本名称 (不是数字的字符都可视为分隔)
E.g
文件后缀格式仅 TXT RAR示例
882546.RAR
02-54D需要截 2013取文件名称中_A1的-1C_数字用-236 来.654F创建 9470-的01.TXT
02-54需要截213 取文98 5548E-件 5689 名称中S19 数字用=236C来.644创建947-的02.RAR
上面3个文件名称中的数字
正确应该会创建出以下16个文本名称 (文本里内容为空)
02.txt
54.txt
2013.txt
1.txt
236.txt
654.txt
9470.txt
01.txt
213.txt
98.txt
5548.txt
5689.txt
19.txt
644.txt
947.txt
882546.txt
Thanks
作者: qixiaobin0715 时间: 2021-11-15 20:52
你的需求总是很另类。
未测试:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt *rar') do (
- set "str1=%%i"
- for /l %%j in (0,1,9) do set "str1=!str1:%%j= !"
- set "str2=%%i"
- for %%k in (!str1!) do set "str2=!str2:%%k= !"
- for %%a in (!str2!) do cd.>%%a.txt
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2021-11-15 22:27
抱歉,是我考虑不周,代码确实有问题。
作者: idwma 时间: 2021-11-15 22:28
给bat吃上ps正则的加成- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt *rar^|powershell "$input -replace '\D+',' '"') do (
- for %%a in (%%i) do cd.>%%a.txt
- )
- pause
复制代码
作者: 娜美 时间: 2021-11-15 23:16
回复 5# idwma
干得漂亮 非常帅, Thanks
作者: 娜美 时间: 2021-11-15 23:22
回复 4# qixiaobin0715
bin哥哥 不用这样说, 应该是我说抱歉, 感谢你们 要你们写上代码, 花时间又要精神
作者: for_flr 时间: 2021-11-16 09:05
- @echo off
- echo;var m=WSH.Arguments(0).match(/\d+/g);WSH.echo(m.join('\r\n')) >#.#
- for /f "delims=" %%a in ('dir /b /a-d *.txt *.rar') do for /f "delims=" %%i in ('cscript -nologo -e:jscript "#.#" "%%a"') do if not exist %%i.txt cd.>%%i.txt
- del #.# /f /q
- exit
复制代码
作者: qixiaobin0715 时间: 2021-11-17 12:56
回复 7# 娜美
牵强用纯批,可以这样:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- set var1=%%a
- set var2=%%a
- for /l %%i in (0,1,9) do set "var1=!var1:%%i=!"
- set "var1=!var1: =!"
- set "var1=!var1:-=!"
- :a
- for /f "tokens=1* delims=%var1%- " %%j in ("!var2!") do (
- cd.>%%j.txt
- if not "%%k"=="" set "var2=%%k"&call :a
- )
- )
复制代码
作者: 娜美 时间: 2021-11-17 16:43
回复 9# qixiaobin0715
9楼 for_flr 6楼 idwma 哥哥的好美
作者: qixiaobin0715 时间: 2021-11-18 10:05
本帖最后由 qixiaobin0715 于 2021-11-18 15:33 编辑
9楼代码是有问题的,还好第10行for循环后面没有其它代码,所以不受影响,如果后面还有其它代码就会出问题。正常应当是下面这样:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.txt *.rar') do (
- set var1=%%a
- set var2=%%a
- for /l %%i in (0,1,9) do set "var1=!var1:%%i=!"
- set "var1=!var1: =!"
- call :a
- )
- pause
- goto :eof
- :a
- for /f "tokens=1* delims=%var1% " %%j in ("!var2!") do (
- cd.>%%j.txt
- if not "%%k"=="" set "var2=%%k"&goto :a
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |