标题: [文件操作] 批处理如何提取文件名里面的一些指定的字符 [打印本页]
作者: kentfung 时间: 2011-9-26 00:13 标题: 批处理如何提取文件名里面的一些指定的字符
我用了一个晚上的时间,对着for的教程来做了一个批处理,不过总感觉这样的做法很笨,看看能不能用更简练的语句来完成,不生成临时文件。
例如:一个目录下有很多个子目录,每个子目录都含有"VTS_01_1 T80 2_0ch 384Kbps DELAY -432ms.ac3"这样类似的文件,红色字体是文件名的共通点,里面的“-432”是一个不定的数字,可能是0,可能是正数或者负数,但不会是小数,现想用一个批处理,要把中间的数都提取出来,而不产生临时文件。
以下是我写的最笨的批处理- dir/b %~dpn1\*.ac3 >>temp.txt
-
- for /f "tokens=6" %%i in (temp.txt) do echo %%i >>temp1.txt
-
- for /f "delims=." %%j in (temp1.txt) do echo %%j >>test.txt
复制代码
作者: hfg1977 时间: 2011-9-26 02:39
本帖最后由 hfg1977 于 2011-9-26 02:41 编辑
假设红字中的数字前面有个空格后面是ms.ac3, 红字前面的空格与字符不定,
只要数字:- for /f "tokens=* delims=" %%a in ('dir /a-d/s/b *.ac3') do (
- echo %%~nxa
- for %%i in (%%~na) do set str=%%~ni
- call set str=%%str:~,-2%%
- call echo.只要数字: %%str%%
- )
复制代码
作者: kentfung 时间: 2011-9-26 15:21
本帖最后由 kentfung 于 2011-9-26 15:25 编辑
感谢LS的帮助,不过最终的输出结果,最后是想要ms结尾的,并且要将%%str%%用一个set来赋值的,应该怎样修改呢?复制代码
另外代码里面的“str”,可以修改成其他吗?因为段代码是要放到其他的批处理里面使用的,str原来已经有了,怕会出错
作者: CrLf 时间: 2011-9-26 15:57
- %1 @cmd /q /v /c %0 :
- for %%a in (*.*) do (
- set fn=%%a
- for /f "delims=" %%b in ("!fn:-=\!") do echo %%~nb
- )
- pause
复制代码
作者: kentfung 时间: 2011-9-26 16:03
看不明白斑竹的代码
运行后显示如下- 123ms
- 720P
- a
- ED
- ED_720P
- temp
- test
- Stream Information
- VTS_01_0
- VTS_01_1 T80 2_0ch 384Kbps DELAY 0ms
- VTS_01_1
- VTS_01_1
- VTS_01_1
- 请按任意键继续. . .
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |