中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 04:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]解释一下无奈何编写的代码 查看 777 回复 0
楼 主 [求助]解释一下无奈何编写的代码 发表于 2007-10-16 09:37 ·  中国 贵州 贵阳 电信
中级用户
★★
积分 304
发帖 117
注册 2006-04-04 18:43
20年会员
UID 53325
性别 男
状态 离线

cls
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: SendTo+ -V0.1 --ReTextName.cmd
:: 无奈何@cn-dos.net - 2006-8-18 - mail:wunaihe@gmail.com
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
::删除批量重命名记录文件
set log="%~dp0ReNameLog.ini"
del %log% 2>nul

:loop
if "%~1" == "" goto :EOF
call :rname "%~1"
shift
goto loop


:rname
setlocal ENABLEDELAYEDEXPANSION
set "firstline="
for /f "usebackq delims=" %%a in ("%~1") do (
if not defined firstline set firstline=%%a&&goto replac
)
:replac
::替换文件名中非法字符
set firstline=!firstline:\=-!
set firstline=!firstline:/=-!
set firstline=!firstline:^<=-!
set firstline=!firstline:^>=-!
set firstline=!firstline::=-!
set firstline=!firstline:?=-!
set firstline=!firstline:"=-!
set firstline=!firstline:^|=-!

:next
set trailstr=!firstline:**=!
set beginstr=!!firstline:%trailstr%=!!

if "%beginstr%" == "" goto rn
set beginstr=!beginstr:~0,-1!
set firstline=%beginstr%-%trailstr%
goto next

:rn
ren "%~1" "!firstline:~0,128!"%~x1
if not ERRORLEVEL 1 echo."%~1" "!firstline:~0,128!"%~x1>>%log%
endlocal
goto :EOF

此批处理中
:next
set trailstr=!firstline:**=!
set beginstr=!!firstline:%trailstr%=!!

if "%beginstr%" == "" goto rn
set beginstr=!beginstr:~0,-1!
set firstline=%beginstr%-%trailstr%
goto next
是什么作用?
特别是: set trailstr=!firstline:**=! 和 set firstline=%beginstr%-%trailstr%
此两行代码是什么作用?
论坛跳转: