中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 15:37
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » for语句do()中设置的变量无法在do()中扩展
可打印版本  709 / 2
第1楼 pinghu 发表于 2008-03-01 12:22
中级用户 发帖 130 积分 307
for语句do()中设置的变量无法在do()中扩展
setlocal enabledelayedexpansion
for %%i in (*.pdf) do (
set new=%%~ni
set new=%new:~0,-1%
ren %%~nxi %new%%%~xi)

改成这样也不行
setlocal enabledelayedexpansion
for %%i in (*.pdf) do (
set new=%%~ni
set new=!new:~0,-1!
ren %%~nxi !new!%%~xi)

如果用上述语句无法实现将所有pdf文件名最后一个半角字符去掉的话,该怎么写呢?
第2楼 pinghu 发表于 2008-03-01 13:32
中级用户 发帖 130 积分 307
setlocal enabledelayedexpansion
for %%i in (*.pdf) do (
set new=%%~ni
set new=!new:~0,-1!
ren "%%~nxi" "!new!%%~xi)"

自己找到错误了,文件名最后一个字符是空格,引号如此重要!!
可以结了
第3楼 everest79 发表于 2008-03-01 13:40
金牌会员 发帖 1,127 积分 2,564
for %%i in (*.pdf) do call :renfile "%%i"
goto :eof

:renfile
set new=%~n1
set new=%new:~0,-1%
ren "%~1" "%new%%~x1"
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023