[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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:\提交成品\是固定,需要拷贝的链接有两个可能,一级目录和二级目录。

根据我对这需求的理解,难道是把文件夹复制到新的位置,然后复制一下新的路径。
不是吧,如果是的话,似乎没批处理的必要吧?
  1. @echo off
  2. md "E:\备分数据\【PPT】王老吉 123 完成图"
  3. xcopy /e /y "E:\备分数据\【PPT】王老吉 123 完成图" "S:\提交成品\【PPT】王老吉 123 完成图"
  4. echo;S:\提交成品\【PPT】王老吉 123 完成图 123 完成图|clip
复制代码

TOP

回复 2# 回家路上


    嗯,差不多就是这个意思,就是要把当前文件夹内容复制到服务器中,因为要发出链接,通知别人这是已完成的链接,但每天重复做这样的工作好多次。
  如果成可直接运行命令能把当前文件夹的内容直接拷上去并生成链接的话,哪就不用每次都要打开哪文件夹去复制链接。

TOP

回复 3# 228630386


哦。明白了。
批处理放到【PPT】王老吉 123 完成图这样的要复制的文件夹下,执行
  1. @echo off
  2. set "dirpath=%~dp0"
  3. for /f "delims=" %%i in ("%dirpath:~0,-1%") do set 当前目录名=%%~ni
  4. md "S:\提交成品\%当前目录名%" >nul 2>&1
  5. xcopy /e /y "%dirpath:~0,-1%" "S:\提交成品\%当前目录名%"
  6. del /q "S:\提交成品\%当前目录名%\%~nx0"
  7. echo;S:\提交成品\%当前目录名%|clip
  8. echo;完成:
  9. echo; 1)复制文件
  10. echo; 1)将目标路径复制到了剪贴板
  11. pause & exit /b
复制代码
1

评分人数

TOP

回复 4# 回家路上


    太强大了,但可否再多加一项就是如果还有一个下级目录的话,也能提取到名称么?
    因为有时候是一级目录下有多个子文件夹,有时候是二级目录下有好多个子文件夹,能否两个都同时做到呢?就是命令能否检测到?
    E:\备分数据\【PPT】王老吉 123 完成图
    复制出来的链接可以是 F:\提交成品\【PPT】王老吉 123 完成图

    E:\备分数据\【PPT】王老吉 123 完成图\目录-1
    复制出来的链接可以是 F:\提交成品\【PPT】王老吉 123 完成图\目录-1

TOP

回复 4# 回家路上


    是否这种二目录链接提取是不可以实现呢?

TOP

本帖最后由 回家路上 于 2015-8-8 15:41 编辑

回复 6# 228630386


哦,刚看到,哈哈,主要我也碰到个问题,没注意
这个当然也能实现只要改前面一点就行了
  1. @echo off
  2. set "dirpath=%~dp0"
  3. set "des=S:\提交成品\"
  4. set 当前目录名=%dirpath:*备份数据\=%
  5. set 当前目录名=%当前目录名:~0,-1%
  6. md "%des%%当前目录名%" >nul 2>&1
  7. xcopy /e /y "%dirpath:~0,-1%" "%des%%当前目录名%"
  8. del /q "%des%%当前目录名%\%~nx0"
  9. echo;%des%%当前目录名%|clip
  10. pause & exit /b
复制代码
我也是初学这个,写的不好哈

要复制那个目录就放在那个目录下运行

TOP

本帖最后由 228630386 于 2015-8-8 15:57 编辑

回复 7# 回家路上


    这个运行时出错了,不知是什么原因呢?
    假如E盘哪个文件夹不是叫备份数据可以么?能否改成什么文件名都能通用?

TOP

回复 8# 228630386


什么错误?
这种根目录名字是不定的,层数估计也是不定的,要复制的目录相对位置也是不定的,我就不会了。
坐等逻辑能力比较强的人吧。

TOP

回复 9# 回家路上


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

TOP

回复 10# 228630386

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

TOP

回复 11# pcl_test


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

回复 13# pcl_test


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

TOP

回复 14# 228630386

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

TOP

返回列表