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

[文件操作] 批处理如何列举当前文件夹和下一级文件夹?

[复制链接]
发表于 2012-9-16 10:04:35 | 显示全部楼层 |阅读模式
需要列举当前文件夹和当前文件夹下一级文件夹符合条件的文件,
现在可以做到列举当前文件夹的文件
  1. for /f "delims=" %%a in ('dir /a-d /b ful*.*') do (
  2.   set/a n+=1&set ".!n!=%%a"&echo,!n!, %%a^    (%%~ta^)
  3. )
复制代码
怎么列举下一级呢??
发表于 2012-9-16 11:46:41 | 显示全部楼层
本帖最后由 apang 于 2012-9-16 15:08 编辑

只列举当前目录和当前目录的下一级子目录:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s ful*.*') do (
  3.   set "p=%%~dpa"
  4.   for %%b in ("\!p:%~dp0=!..") do set "p=%%~nxb"
  5.   if "!p!"=="" (
  6.     set/a n+=1&set ".!n!=%%~nxa"&echo,!n!, %%~nxa ^(%%~ta^)
  7.   )
  8. )
  9. pause
复制代码
 楼主| 发表于 2012-9-17 09:48:31 | 显示全部楼层
回复 2# apang


    如果有重名的怎么办??怎么区分?如何添加路径显示呢??
发表于 2012-9-17 11:49:41 | 显示全部楼层
回复 3# wosliming

第6行,%%~nxa改成%%a
 楼主| 发表于 2012-9-17 15:35:14 | 显示全部楼层
本帖最后由 wosliming 于 2012-9-17 16:30 编辑

回复 4# apang


    再请教一个问题,获得当前和下一级目录的文件后, 想实现的是在得到的文件列表中选择循环执行,so,
  1. for /f "delims=" %%a in ('dir /a-d /b /s *.fan') do (
  2.   set "p=%%~dpa"
  3.   for %%b in ("\!p:%~dp0=!..") do set "p=%%~nxb"
  4.   if "!p!"=="" (
  5.     set/a n+=1&set ".!n!=%%~nxa"
  6.     echo,!n!, %%a&echo %%a>>temp.txt   ::将得到的文件列表放到temp中
  7.   )
  8. )
  9. set/p input=Please input the NO.order for which one you want to Run:
  10. for /f %%i in (temp.txt) do (
  11.   set/a m+=1&set .!m!=%%~i
  12. )   ::从temp中获取文件,执行上面input的输入的循环
  13. for %%i in (%input%) do if defined .%%i (
  14. echo !.%%i!
复制代码
这样的再选择循环,有没有更好的方法??只是实现在得到的文件中选择要执行的,比如 1 2 1 2 1 3…………这样,不想引入一个temp的临时文件
发表于 2012-9-17 17:54:35 | 显示全部楼层
本帖最后由 apang 于 2012-9-17 17:55 编辑

回复 5# wosliming
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s *.fan') do (
  3.   set "p=%%~dpa"
  4.   for %%b in ("\!p:%~dp0=!..") do set "p=%%~nxb"
  5.   if "!p!"=="" (
  6.     set/a n+=1&set ".!n!=%%~sa"
  7.     echo,!n!, %%~sa
  8.   )
  9. )
  10. set/p input=Please input the NO.order:
  11. for %%i in (%input%) do if defined .%%i echo,!.%%i!
  12. pause
复制代码
 楼主| 发表于 2012-9-17 18:46:33 | 显示全部楼层
回复 6# apang


    你是"pznpt"?????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:34 , Processed in 0.018377 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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