呵呵 刚才我正好在调试 发现会把第一次重命名了的文件再进for中执行一次,正发愁呢忽然看到你们的回复 真是太感谢了
另外我把无奈何兄的代码小改了一下
echo 信息放在了 rename语句的后面 而且是成功了才执行 呵呵
谢谢斑竹和无奈何兄
@echo off
echo ----------------------------执行信息----------------------------
for /f "delims=" %%a in ('dir /b *.pdf') do call :name "%%a"
echo ----------------------------------------------------------------
echo 执行完毕,按任意键退出
pause >nul
exit
:name
set name=%~1
::以下两句删除下划线之前的字符
set name=%name:*_p=%
set name=%name:*_p=%
::以下循环可以删除前导字母和零
:loop
set m=%name:~0,1%
if "%m%" LEQ "9" (
if "%m%" GTR "0" (
rename %1 "%name%" 2>nul &&echo %1更名为"%name%" ||echo 无法重名文件%1,存在同名文件%name%或者文件已打开
goto :EOF
)
)
set name=%name:~1%
goto loop
goto :EOF
Last edited by kcdsw on 2006-4-14 at 20:57 ]