标题: [文本处理] [已解决]批处理如何截取文件名的前一段? [打印本页]
作者: Ico 时间: 2011-3-14 22:29 标题: [已解决]批处理如何截取文件名的前一段?
比如我获取了文件名
gggdsa22_23cfdsfsdf.mp3
dsa22_23fdsf.mp3
我想截取到22_23 就停止
就只想要它之前的字符串
大家帮帮忙啦
补充下: 已知文件夹下存放各种dmp文件(数据库文件),文件名包含了数据库用户的名称,所以我要先获取该文件的全名,然后从获取的文件名中截取到数据库的用户名
所以
我试验暂时输出他们的名字是这样的
@echo off
for /r E:\DataDMP\ %%i in (*.dmp) do (
set str=%%i
echo E:\DataDMP\%%i
call echo %%str%%
)
pause
[ 本帖最后由 Ico 于 2011-3-14 23:11 编辑 ]
作者: CrLf 时间: 2011-3-14 22:35
set filename=%filename:*22_23=22_23%
作者: Ico 时间: 2011-3-14 22:38 标题: 回复 2楼 的帖子
截取到后面的了,我想截取前面的。。
作者: haiou327 时间: 2011-3-14 22:55
file.txt- gggdsa22_23cfdsfsdf.mp3
- dsa22_23fdsf.mp3
复制代码
test.cmd
@echo off
for /f "tokens=1,2* delims=22_23" %%i in (file.txt) do echo %%i
pause
作者: Ico 时间: 2011-3-14 22:55 标题: 回复 4楼 的帖子
真的不好意思哦,我没把问题说清楚,我是先要获取文件名和拓展名的,然后再获取文件名 22_23前面的字符串
我是这样写的
@echo off
for /r E:\DataDMP\ %%i in (*.dmp) do (
set str=%%i
echo E:\DataDMP\%%i
call echo %%str%%
)
pause
作者: CrLf 时间: 2011-3-14 22:58
delims不能将词组作为分隔符,所以折衷的办法是把词组替换成不可能存在于目标字符串的符号,比如文件名中不可能有\,所以就可以:- @echo off
- set filename=%filename:22_23=\%
- for /f "delims=\" %%a in ("%filename%") echo %%a
- pause
复制代码
作者: CrLf 时间: 2011-3-14 23:04
- @echo off&setlocal enabledelayedexpansion
- for /r E:\DataDMP\ %%i in (*.dmp) do (
- set filename=%%i
- echo E:\DataDMP\%%i
- set filename=%filename:22_23=\%
- for /f "tokens=1* delims=\" %%a in ("%filename%") echo %%a%%b
- )
- pause
复制代码
作者: haiou327 时间: 2011-3-14 23:06
.
.@echo off
for /f "tokens=1,2* delims=22_33" %%i in ('dir /a-d/b *.dmp') do echo %%i
pause
[ 本帖最后由 haiou327 于 2011-3-14 23:08 编辑 ]
作者: Ico 时间: 2011-3-14 23:10 标题: 回复 8楼 的帖子
哈哈哈,解决了 谢谢哦··
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |