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

[文本处理] 如何将一个文件夹里的多个文件按指定数量依次移动到另一个文件夹里的多个子文件夹里

[复制链接]
 楼主| 发表于 2011-12-17 14:57:12 | 显示全部楼层

[已解决]批处理文件替换变量为空怎么就变身为文件夹了?

这是题目http://bathome.net/thread-14993-1-1.html
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /ad /b /s B\*') do (
  4. set /a a+=1
  5. set !a!=%%a
  6. echo !a!=%%a
  7. )
  8. set /p n=请输入
  9. set /a aa=!n!*!a!
  10. for /f "delims=" %%a in ('dir /a-d /b /s A\*.*') do (
  11. set /a b+=1
  12. set /a c+=1
  13. if "!c!" gtr "!a!" set c=1
  14. call :a "%%a"
  15. if !b! == !n! pause&exit
  16. )
  17. :a
  18. move %1 "!%c:"=%!"
  19. goto :eof
复制代码
第18段!中的"!%c:"=%!"不懂!
我知道单独的“%c:"=%”这是把变量c里的"去掉!但是代码中外面加  !!  干什么?例外这代码怎么就成了目录了?

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-12-17 15:49:57 | 显示全部楼层
!%c:"=%!
把%c%中的 " 替换成 %
 楼主| 发表于 2011-12-17 16:47:14 | 显示全部楼层
回复 2# canyuexiaolang
错了吧!
发表于 2011-12-17 17:18:26 | 显示全部楼层
如果把@echo off删掉,执行过程中,18行如何显示?

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

 楼主| 发表于 2011-12-18 10:02:16 | 显示全部楼层
回复 4# awk
他的执行结果就是dir /s /ad /b d\*  这个执行结果!只是他是1个1个用有点象for例如:
move 1.txt 1
move 2.txt a
发表于 2011-12-18 11:22:08 | 显示全部楼层
可以说你不明白%的意义,在18行中%实际上比!要好(出于效率),但是%还有脱义的作用(也就是常说的转义),可以的话你可以试一下用%来代替!,看看结果

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

发表于 2011-12-18 11:41:27 | 显示全部楼层
我是来围观楼上的。
发表于 2011-12-18 12:48:55 | 显示全部楼层
楼主可能对类似思路见得相对较少,所以有此一问。
第一个 for 先将所有目录名称赋给一个变量,变量名称是序号,序号每循环加 1,如果我没说清楚,那在第 7、8 两行间 set|more 一下就知道了。
看懂第一个 for 之后,代码的思路就很清晰了,只是引用序号对应的文件夹名而已。
第二个 for 其实其实也是同理,不过它只需引用 %%a 而不需要赋值给对应的序号。

%c:"=% 貌似写成 %c% 也可以,因为 %c% 本身就是纯数字,所以 !%c%! 的意思就是取 %c% 值对应的变量值(即第一个 for 中设置的文件夹名)

评分

参与人数 1技术 +1 收起 理由
jellyhk + 1 终于勉强明白了!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:18 , Processed in 0.016155 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表