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

[文件操作] 求助批处理取消深层次子目录读取

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%t in ('dir /ad /b /s M:\未上') do (
  4. @cd %%t
  5. @for %%i in ("!cd!") do (
  6. @for /f "delims=" %%j in ('dir/b')do @echo %%~nj>>%%~ni.xls
  7. )
  8. )
  9. for /f "delims=" %%f in ('dir /s /b M:\未上\*.xls') do move "%%f" M:\1
  10. @echo 完毕,所有文件保存在“M:\1”中
  11. pause
复制代码
源代码能够识别到“M:\未上\”里面所有子目录的所有文件

现在只想要它只识别到如“M:\未上\张三\*.*”   “M:\未上\李四\*.*”

更深的如:“M:\未上\张三\AA\*.*”就不要了

for /f "delims=" %%f in ('dir /s /b M:\未上\张三\* M:\未上\李四\*') do move "%%f" M:\1

TOP

回复 2# smss


    这个有很多文件夹的  张三 李四 只是个例子
而且这样它也会在子目录生成xls文件

TOP

  1. @echo off&setlocal EnableDelayedExpansion
  2. MD "M:\1"
  3. @for /f "delims=" %%i in ('dir /a:d /B M:\未上\*') do (
  4.     for /f "delims=" %%j in ('dir /b/a-d/oN "%%i\*.*"') do (
  5.     echo move M:\未上\%%i\%%j M:\1\%%~nj.xls
  6.     )
  7. )
  8. pause
复制代码
移动文件并且修改文件类型?如果没错echo move的echo删除就可以了

TOP

本帖最后由 xp3000 于 2020-5-10 20:12 编辑
  1. @echo off&setlocal EnableDelayedExpansion
  2. MD "M:\1"
  3. @for /f "delims=" %%i in ('dir /a:d /B M:\未上\*') do (
  4.     for /f "delims=" %%j in ('dir /b/a-d/oN "%%i\*.*"') do (
  5.     echo M:\未上\%%i\%%j
  6.     )>>M:\1\%%~ni.xls
  7. )
  8. pause
复制代码
要是仅仅提取文件名就这样

TOP

回复 5# xp3000


    是提取文件名 但是是提取 M:\未上\  下一级目录的文件名 如:“M:\未上\张飞\*.*”  不是提取 M:\未上  目录里面的文件名

TOP

提取文件名上面的够了

TOP

第一个for循环采用for /d是否可行?

TOP

可以
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd M:\未上
  4. for /d %%a in (*) do (
  5. cd "%%a"
  6. for /f "delims=" %%b in ('dir /b/a-d/oN *.*') do (
  7. echo %%~nxb
  8. cd M:\未上
  9. )>>"M:\1\%%~na.xls"
  10. )
  11. pause
复制代码

TOP

返回列表