Board logo

标题: [文本处理] 批处理bat如何提取目录最深层? [打印本页]

作者: Linux9253    时间: 2015-8-22 11:54     标题: 批处理bat如何提取目录最深层?

  1. @echo off
  2. set "list=E:\winfs\beudf\ D:\uuyrty\owuey\polwur\ D:\moieyr\oieyrds\dloueys\llowyrf\
  3. for %%a in (%list%) do
  4. xcopy /iEyq %%a Z:\Info\##\New\##
复制代码
这是一个备份脚本
##代表list变量的最深一层目录,beudf  polwur  llowyrf  、就是这个地方不会提取目录的最深层

目录深度和长度都不固定、求大神帮忙、完善下、如有更好的思路更好。谢谢大家了
作者: pcl_test    时间: 2015-8-22 12:03

本帖最后由 pcl_test 于 2015-8-22 15:09 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('more +6 %0') do (
  3.    md "Z:\%%~nxa\New" 2>nul
  4.    xcopy "%%a" "Z:\%%~nxa\New\%%~nxa\" /eyq
  5. )
  6. pause&exit
  7. E:\winfs\beudf
  8. D:\uuyrty\owuey\polwur
  9. D:\moieyr\oieyrds\dloueys\llowyrff
复制代码

作者: Linux9253    时间: 2015-8-22 12:26

回复 2# pcl_test


    非常感谢您的回复、没想到星期天还在工作、致敬,
代码刚才一直在测试、可以提取最深的目录、但因为个人水平问题、一直没能把
想要的功能嵌套进去,
  1. @echo off
  2. for /f "delims=" %%a in ('more +3 %0') do if not exist C:\%%~nxa\New (mkdir C:\%%~nxa\New) & xcopy /iEyq %%a C:\%%~nxa\New\%%~nxa
  3. pause&exit
  4. E:\winfs\beudf
  5. D:\uuyrty\owuey\polwur
  6. D:\moieyr\oieyrds\dloueys\llowyrf
复制代码
不知道这个时候%%a是不是代表的完整路径、总是我没有实现我想要的功能、又来麻烦您了、
可能你现在在吃饭把、没事、吃完在解决、
作者: pcl_test    时间: 2015-8-22 12:32

并不明白你想要的效果
作者: Linux9253    时间: 2015-8-22 14:51

回复 4# pcl_test

刚才不好意思、出去吃饭了、

    就是要把定义好的多个目录拷贝到另一个地方暂时称为Z:盘、在Z:盘这个地方要注意的是

目录结构、假如多个目录中有个目录是C:\administrative\complete\  把它拷贝到Z:盘后的目录结构是Z:\complete\New\complete

当然这个\complete\New\complete目录是不存在的、所以要检测、存在就不创建、直接复制、不存在就创建、然后复制

就是这个要求、麻烦您了
作者: pcl_test    时间: 2015-8-22 15:09

回复 5# Linux9253

已修改
作者: Linux9253    时间: 2015-8-22 16:14

本帖最后由 Linux9253 于 2015-8-24 09:07 编辑

回复 6# pcl_test


   刚才我测试过了、非常感谢、但是有一个问题就是、bat脚本里还有很多的其他代码、
如果只是您给我的代码是能解决问题的、但如果还有其他代码就不行了、、、会把其他代码当成文件目录创建。
请问怎么解决呢?谢谢、给您添麻烦了


好吧、我承认我很笨、刚才我自己按照自己的思路修改下、竟然可以了、
所以不麻烦了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2