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

[文件操作] 【已解决】如何将指定目录下的文件及文件夹按原有目录结构复制到别的目录里

本帖最后由 pcl_test 于 2017-4-23 23:54 编辑

批处理是否可以命令将指定文件复制,并生成链接?
假如是 E:\备分数据\【PPT】王老吉 123 完成图,文件夹中还有子文件和内容,
能否实现将【PPT】王老吉 123 完成图文件下的所有内容复制到指定的位置:如S:\提交成品\,这个路径中,并自动生成链接
即S:\提交成品\【PPT】王老吉 123 完成图,并带有此连接的复制功能,可以在QQ之类直接发出来?

假如是  E:\备分数据\【PPT】王老吉 123 完成图\目录-1,即需要生成的链接是S:\提交成品\【PPT】王老吉 123 完成图\目录-1

E盘中的文件夹名不固定,只有S:\提交成品\是固定,需要拷贝的链接有两个可能,一级目录和二级目录。

回复 21# pcl_test
回复 22# 回家路上

真心感谢两位大侠,完美的解决了这个问题,因为我提出问题时没想到这么多的细节,让你们费心了!!!

TOP

回复 20# 228630386


高手都到这儿了,必须学习O(∩_∩)O~
放在第一级目录下(不管有没有二级目录)
  1. @echo off
  2. set "fd=F:\提交成品\"
  3. for /f "delims=" %%i in ('dir /ad /b^|findstr "【[^^【】]*】"') do set chd=\%%i
  4. set dd=%~dp0
  5. for /f "delims=" %%i in ("%dd:~0,-1%") do (
  6. set rootd=%%~dpi
  7. set td=%%~ni%chd%
  8. )
  9. if not exist "%fd%%td%" md "%fd%%td%"
  10. xcopy /e /y "%rootd%%td%" "%fd%%td%"
  11. echo;%fd%%td%|clip
  12. echo;目标路径已复制到剪贴板,按Ctrl+V即可粘贴&ping -n 2 0 >nul
  13. pause & exit /b
复制代码

TOP

本帖最后由 pcl_test 于 2015-8-9 10:58 编辑

回复 20# 228630386
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ("%cd%") do set "td=%%~nxi"&set "t=%%~dpi"
  3. (echo;%cd%|findstr "\[[^\[\]]*\][^\\]*\\【[^【】]*】") >nul&&(
  4.     for /f "delims=" %%j in ("!t:~,-1!") do set "td=%%~nxj\%td%"
  5. )
  6. set "fd=F:\提交成品"
  7. if not exist "%fd%" md "%fd%"
  8. for /d %%a in (*) do xcopy "%%a" "%fd%\%td%\%%a\" /s /y
  9. ::win7及以上系统才有clip
  10. echo;%fd%\%td%|clip
  11. echo;目标路径已复制到剪贴板,按Ctrl+V即可粘贴&ping -n 2 0 >nul
复制代码

TOP

回复 19# pcl_test
   
但要跟你之前给我的命令放在一起要怎么改呢?还是要大神帮忙,感激不尽!!!
@echo off & setlocal enabledelayedexpansion
set "fd=F:\提交成品"
if not exist "%fd%" md "%fd%"
pushd ..
for /f "delims=" %%i in ("%cd%") do set "td1=%%~nxi"
popd
for /f "delims=" %%j in ("%cd%") do set "td2=%%~nxj"
for /d %%a in (*) do xcopy "%%a" "%fd%\%td1%\%td2%\%%a\" /s /y
::win7及以上系统才有clip
echo;%fd%\%td1%\%td2%|clip
echo;目标路径已复制到剪贴板,按Ctrl+V即可粘贴&ping -n 2 0 >nul

TOP

本帖最后由 pcl_test 于 2015-8-8 23:28 编辑

回复 18# 228630386
如果目录中方括号是有此规律,那么可以区分的
  1. @echo off
  2. (echo;%cd%|findstr "\[[^\]]*\][^\\]*\\【[^】]*】") >nul&&echo;当前二级||echo;当前一级
  3. pause
复制代码

TOP

回复 17# 回家路上
  
 经你这么分析,他们的确有一些规律,就这命名中的中括号有区别:
  如果是一级目录通常用【】开始命名,全角中括号中会有英文:如【ppt】批处理之家
  
  如果是二级目录通常用 [] 开始命名,下级目录是用【】开始命名,半角中括号中会有英文:如 [ppt]批处理之家\【PPT】批处理之家-1

  然后目录N的文件命名通常是数字+一个空格或者两个空格+数字或者英文:如1 692112156, 8 692546122156

TOP

回复 16# 228630386


看高手写的代码就是好,有层次感,逻辑清楚。

哦,目录X是一定有了呀。我当时就在想嘛
目录有和没有怎么判定
有的话到底可能同时有几个
        如果有多个
                拷贝几个
                        拷贝一个的话拷贝那种条件的
                        拷贝多个的话哪个的路径复制到剪贴板

你的目录结构是这样的,                               
        根目录名称不定
                  |
                  |__要拷贝目录名称不定
                                        |
                                        |_____目录N
所有都是不定的,就没法判定目录N是不是存在了

要判定的话就得给个定的条件任意给以下一个条件:
        1)根目录名称
        2)根目录上级名称
        3)目录N名称或者命名规则
        目录N到底可能同时有几个
                如果有多个
                        拷贝几个
                                拷贝一个的话拷贝【哪种条件】的
                                拷贝多个的话哪个的路径复制到剪贴板

TOP

回复 15# pcl_test


    可以了,应该是我刚才拷贝命令的时候拷错了。非常感谢大家,再加上你上次帮我弄的批处理添加标记,整理流程连在一起工作起来真的方便很多。
  目前一级和二级目录只能分开两个命令去处理,这样也方便不小了。

TOP

回复 14# 228630386

测试没有问题,是否放进目录-1里运行?核对下代码

TOP

回复 13# pcl_test


    F:\提交成品\【PPT】王老吉 123 完成图\001 - 副本 (9)
    测试了一下,但复制出来的链接是等于这个,并非目录-1,难道没有办法能解决?

TOP

本帖最后由 pcl_test 于 2015-8-8 20:11 编辑

回复 12# 228630386
放进目录-1里运行
  1. @echo off & setlocal enabledelayedexpansion
  2. set "fd=F:\提交成品"
  3. if not exist "%fd%" md "%fd%"
  4. pushd ..
  5. for /f "delims=" %%i in ("%cd%") do set "td1=%%~nxi"
  6. popd
  7. for /f "delims=" %%j in ("%cd%") do set "td2=%%~nxj"
  8. for /d %%a in (*) do xcopy "%%a" "%fd%\%td1%\%td2%\%%a\" /s /y
  9. ::win7及以上系统才有clip
  10. echo;%fd%\%td1%\%td2%|clip
  11. echo;目标路径已复制到剪贴板,按Ctrl+V即可粘贴&ping -n 2 0 >nul
复制代码
1

评分人数

TOP

回复 11# pcl_test


    我QQ找你了,你应该是没上QQ,哪只有区分成二种方法去做。一级目录已经解决了,哪指定这样的二级目录和命令能实现么用命令去操作么?
 假如是  E:\备分数据\【PPT】王老吉 123 完成图\目录-1,即需要生成的链接是S:\提交成品\【PPT】王老吉 123 完成图\目录-1

TOP

回复 10# 228630386

不确定的因数太多,并不能很好的区分你所说的一级和二级目录,所以要无误的区分,最好就是指定目录,或者有规律可循

TOP

回复 9# 回家路上


   命令可以运行了,真心非常感谢,但拷贝出来的链接也是没有显示子目录。即目录-1
 不过能做到这一步已经可以让我们工作起来方便很多了,如果可以实现一下在E盘中的文件名无论是什么文件名都能执行就更好
   因为每个人的路径都不一样,请问还有其它大神能帮帮忙么?

TOP

返回列表