[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样实现文件批量改名?

本帖最后由 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
复制代码
这个修改文件名只能修改名称里没有空格的,求解。本人菜鸟。。。。
1

评分人数

    • tmplinshi: 感谢给帖子标题标注[已解决]字样PB + 2

额 刚才给忘了 抱歉

TOP

加上双引号就行了
  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实现
1

评分人数

TOP

加上双引号就行了@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

TOP

返回列表