中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 00:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何去掉文件名的最后几个字符? 查看 937 回复 8
楼 主 [已结]如何去掉文件名的最后几个字符? 发表于 2008-04-03 00:17 ·  中国 北京 联通
初级用户
积分 32
发帖 11
注册 2008-03-08 22:19
18年会员
UID 112424
性别 男
状态 离线
如何去掉文件名的最后几个字符?

比如有个文件名为 host_1.1.1.1_200710301232.log
我想去掉“_200710301232”这几个字符,但是不去掉扩展名“.log”,
批处理怎么写呢?谢谢

[ Last edited by HAT on 2008-12-31 at 02:04 ]
2 用变量替换: 发表于 2008-04-03 00:26 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
@echo off
set var=host_1.1.1.1_200710301232.log
set var=%var:_200710301232=%
echo %var%&pause
批处理之家新域名:www.bathome.net
3 发表于 2008-04-03 00:32 ·  中国 北京 联通
初级用户
积分 32
发帖 11
注册 2008-03-08 22:19
18年会员
UID 112424
性别 男
状态 离线
Originally posted by zw19750516 at 2008-4-3 12:26 AM:
@echo off
set var=host_1.1.1.1_200710301232.log
set var=%var:_200710301232=%
echo %var%&pause


呃,这个,是这样的,我有一堆文件,我想去掉文件名的最后15个字符,这15个字符不全是“_200710301232”,只是字符数目一样多,因此不能这样直接替换。
4 也好办: 发表于 2008-04-03 00:44 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
假设所有文件在d盘a文件夹中:
@echo off
for /f "delims=.log tokens=1" %%i in ('dir /a-d /b d:\a') do (
set var=%%i
setlocal enabledelayedexpansion
set var=!var:,-15!
echo !var!
endlocal
)
pause&goto :eof


[ Last edited by zw19750516 on 2008-4-3 at 12:49 AM ]
批处理之家新域名:www.bathome.net
5 发表于 2008-04-03 00:44 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
21年会员
UID 44210
状态 离线
自己测试:

@echo off
for /f "tokens=1,2,3 delims=_" %%i in ('dir/b *.log') do echo %%i_%%j_%%k - %%i_%%j%%~xk
pause


[ Last edited by zh159 on 2008-4-3 at 12:46 AM ]
6 发表于 2008-04-03 02:13 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
@echo off
for /f "delims=" %%i in ('dir/b /a-d *.log') do set a=%%i&call echo %%a:~0,-15%%%%~xi
pause
简单!简单!再简单!
7 发表于 2008-04-03 16:01 ·  中国 北京 光环新网
初级用户
积分 32
发帖 11
注册 2008-03-08 22:19
18年会员
UID 112424
性别 男
状态 离线
Originally posted by zh159 at 2008-4-3 12:44 AM:
自己测试:

@echo off
for /f "tokens=1,2,3 delims=_" %%i in ('dir/b *.log') do echo %%i_%%j_%%k - %%i_%%j%%~xk
pause


[ Last edited by zh159 on 2008-4-3 at 12:46 AM ]



这个不错,受教了,^_^
8 发表于 2008-04-07 19:30 ·  中国 甘肃 兰州 电信
初级用户
积分 47
发帖 31
注册 2008-03-17 19:04
18年会员
UID 113236
性别 男
状态 离线
学习了,是个好东西。
9 发表于 2008-12-30 07:49 ·  西班牙
新手上路
积分 5
发帖 3
注册 2006-12-05 12:30
19年会员
UID 72635
性别 男
状态 离线
试试这个看行不行!

@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b ".\*.log"') do set filename=%%~na ren %%a !filename:~0,-13!.log




晕,没有看发贴的时间!

[ Last edited by nanoking on 2008-12-30 at 07:57 ]
论坛跳转: