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

[文件操作] 求助批处理for中的set参数定义所有子文件夹?

参考了xp自带的命令行参考

set 参数可以代表单个或多个文件组。可以使用通配符(即,* 和 ?)指定文件组。以下为有效文件组:
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
在使用 for 命令时,set 中的第一个值代替 %variable%%variable,然后由指定的命令处理该值。这一直会继续下去,直到处理完与 set 值相对应的所有文件(或文件组)为止。

若我想用set定义此文件夹下所有的子文件夹,应该怎样定义?
我是小菜菜……

for /?
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

    检查以 [drive:]path 为根的目录树,指向每个目录中的
    FOR 语句。如果在 /R 后没有指定目录,则使用当前
    目录。如果集仅为一个单点(.)字符,则枚举该目录树。

蓝色部分其实就是遍历所有子文件夹的意思。
显示的结果是文件夹后面多了\.,它基本与文件夹等价。
dir C:\windows
dir C:\windows\.
dir C:\windows\.\.\.\.\.\.\.\.\.\.\.
原理参见:
批处理常用符号详解
http://www.bathome.net/viewthread.php?tid=1205
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

系统自带的命令行参考简直是误人子弟,建议参考本论坛教程:http://bbs.bathome.net/thread-2189-1-1.html

你把@echo off删除,看看执行过程就明白了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

我参考的是系统自带的命令行参考
  1. start c:\windows\hh ntcmds.chm
复制代码
其实是老师要求我们把在校做的练习拷回家,以保存自己的操作进度。我的思路是这样的:在父文件夹下新建学生文件夹(多个),运行该批处理即可在这些文件夹下新建一个以当前日期(不是系统日期)为名称的文件夹。以下的批处理为什么不能实现呢?
  1. @echo off
  2. color 0f
  3. echo.           
  4. echo.
  5. set /p mouth=           请输入月份:
  6. echo.           
  7. echo.
  8. set /p day=           请输入日期:
  9. set dir=%mouth%-%day%
  10. md %dir%
  11. for /f "delims=" %%a in ('dir /s /b /ad') do (copy "%dir%" "%%a")
  12. pause
复制代码
我是小菜菜……

TOP

你看的是哪个教程?

这里的set不是指set命令,而是指集合。也就是说for ... in (...) do ... 语句中的括号里面是一个集合。当使用通配符的时候,自然可以表示“单个或多个文件组”。

“此文件夹下所有的子文件夹”可以这样定义:
  1. for /f "delims=" %%a in ('dir /s /b /ad') do (
  2.   echo %%a
  3. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不知道利用dir /s /a:d 可以否
只是自己要处理两个特殊文件夹
. 当前目录
..  父目录
您可以用 FOR /F 命令来分析命令的输出,利用判断语句即可完成去掉两个特殊文件夹

TOP

返回列表