Board logo

标题: [文件操作] [已解决]批处理怎样实现文件批量改名? [打印本页]

作者: a382039369    时间: 2011-6-1 13:20     标题: [已解决]批处理怎样实现文件批量改名?

本帖最后由 a382039369 于 2011-6-1 20:31 编辑
  1. @echo off
  2. %~d1
  3. cd %~d1%~p1
  4. set /a a=0
  5. :loop
  6. if [%~1]==[] goto exit
  7. if exist %a%%~x1 goto next
  8. ren "%~n1%~x1" "%a%%~x1"
  9. shift
  10. :next
  11. set /a a=%a%+1
  12. goto loop
  13. :exit
复制代码
这个修改文件名只能修改名称里没有空格的,求解。本人菜鸟。。。。
作者: a382039369    时间: 2011-6-1 13:39

额 刚才给忘了 抱歉
作者: CrLf    时间: 2011-6-1 14:03

加上双引号就行了
  1. @echo off
  2. %~d1
  3. ::看不懂,是为了兼容dos吗?
  4. cd /d "%~dp1"
  5. ::建议加上d开关,兼容跨盘符切换。另外扩展的参数可以并用,无需分开
  6. set a=0
  7. :loop
  8. if "%~1"=="" goto exit
  9. ::建议用双引号代替方括号,以避免文件名带&和空格的情况。
  10. if exist "%a%%~x1" goto next
  11. ren "%~nx1" "%a%%~x1"
  12. shift
  13. :next
  14. set /a a=%a%+1
  15. goto loop
  16. :exit
复制代码
goto和call虽然易学,但是各方面的消耗都比较大,建议有空可以思考一下如何用for实现
作者: a382039369    时间: 2011-6-1 20:30

加上双引号就行了@echo off
%~d1
::看不懂,是为了兼容dos吗?
cd /d "%~dp1"
::建议加上d开关,兼容跨盘符切换。另外扩展的参数可以并用,无需分开
set a=0
:loop
if "%~1"=="" goto exit
::建议用双引号代 ...
zm900612 发表于 2011-6-1 14:03

  %~d1写多余了......  因为我在命令提示符里面直接cd到其他盘符进不去,所以才会写成这样的 .....
  还有就是那个[]改成""的确好些了,当初ren里面就用双引号防止空格问题 ,前面却忘了......
多谢帮助....3Q




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2