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

[文件操作] 【已解决】批处理如何将硬盘上所有Doc文档自动复制U盘指定文件夹?

[复制链接]
发表于 2013-6-6 14:00:47 | 显示全部楼层 |阅读模式
本帖最后由 tangqingfu 于 2013-6-9 15:23 编辑

在一台Win 7+Office 2010的电脑上测试下面的代码(在Win XP+office 2003可以通过),运行后出现提示信息是:指定的路径无效
请教是什么原因,和系统及office版本有关吗?该如何解决?
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 将硬盘上所有Doc文档自动复制U盘指定文件夹HDDoc中
  3. set ext=Doc
  4. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do set "up=%%i"
  5. if not exist "%up%\HDDoc" md "%up%\HDDoc"
  6. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
  7. >$t.em dir /s /b !exts! 2>nul
  8. for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-6-6 14:48:02 | 显示全部楼层
  1. setlocal enabledelayedexpansion
  2. set ext=Doc
  3. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do set "up=%%i"
  4. if not exist "%up%\HDDoc" md "%up%\HDDoc"
  5. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
  6. >$t.em dir /s /b !exts!
  7. for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码
代码保存为C:\test.bat
开始
运行
cmd
C:\test.bat
结果贴出来看看
 楼主| 发表于 2013-6-6 16:01:48 | 显示全部楼层
回复 2# Batcher
Batcher兄的意思是否是:
将代码保存为名为“test”的bat文件,并将其置于C盘的盘符下?
然后点击“开始/运行”,输入“CMD”,在弹出的CMD窗口中输入“C:\test.bat”?
等明天上午测试后再向你汇报测试结果(能否请Batcher兄提前透露这样做有何用途?)
发表于 2013-6-6 16:18:32 | 显示全部楼层
回复 3# tangqingfu


是的。目的是查看执行过程,以便确认是什么地方出错了。
发表于 2013-6-6 16:47:54 | 显示全部楼层
前面 for 里 这样试
没 WIN7 环境 你试下
  1. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do for /f %%j in ("%%i") do set "up=%%j"
  2. if not exist "%up%\HDDoc" md "%up%\HDDoc"
  3. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do (
  4.     for /f %%j in ("%%i") do set "exts=!exts! %%j\*.%ext%"
  5. )
复制代码
发表于 2013-6-6 18:14:48 | 显示全部楼层
  1. @echo off
  2. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do echo "%%i"
  3. pause
复制代码
xp上显示:

Win7上显示:

问题出在最后一行的 \" 上面

可以用find过滤
  1. @echo off
  2. for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID^|find ":"') do echo "%%~dpi"
  3. pause
复制代码
 楼主| 发表于 2013-6-7 12:32:13 | 显示全部楼层
回复 5# terse

运行后好像提示“ff&不是内部命令或批处理程序”这样的内容。
 楼主| 发表于 2013-6-7 12:36:21 | 显示全部楼层
回复 6# apang
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 将硬盘上的指定类型Doc文件自动复制U盘指定文件夹HDDoc
  3. set ext=Doc
  4. for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID^|find ":"') do echo "%%~dpi"
  5. if not exist "%up%\HDDoc" md "%up%\HDDoc"
  6. for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
  7. >$t.em dir /s /b !exts! 2>nul
  8. for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码
代码可以正常运行,但会将U盘的内容也复制过去,好像是全盘复制了。
不知如何修改,使之只交硬盘上的doc文档复制到U盘中(U盘中的doc文档不复制)?

Batcher兄的方法忘记测试,等明天再测试(实在不好意思)
发表于 2013-6-7 12:50:50 | 显示全部楼层
如过滤可行 那你在第二个FOR 里也用过滤哦
应该是不可见字符作怪
原记得 FOR 可过滤的啊
还是贴下运行结果吧
发表于 2013-6-7 16:51:17 | 显示全部楼层
把你自己代码的:

  1. set "up=%%i"
复制代码

  1. if exist %%i\nul set "up=%%i"
复制代码
你代码要稍微改改,要是你没插U盘看看会出什么后果。
 楼主| 发表于 2013-6-7 18:09:10 | 显示全部楼层
回复 10# xxpinqz

能否请xxpinqz兄明示?
发表于 2013-6-7 18:26:50 | 显示全部楼层
回复 11# tangqingfu


    能否请你自己测试一下?
发表于 2013-6-7 21:54:25 | 显示全部楼层
回复 13# 学习处理


    哪个删除指定文件夹的?
 楼主| 发表于 2013-6-8 07:09:01 | 显示全部楼层
回复 10# xxpinqz
对于bat代码知之甚少,不知如何修改,能否请xxpinqz兄帮忙写个完整的代码?
发表于 2013-6-8 07:41:38 | 显示全部楼层
还没搞定啊?如此这般试下。。。
  1. @echo off
  2. rem 将硬盘上所有Doc文档自动复制U盘指定文件夹HDDoc中
  3. set "ext=Doc"
  4. for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get Name^|find ":"') do (
  5.     md "%%~di\HDDoc" 2>nul
  6.     for /f "delims=" %%j in ('wmic logicaldisk where "drivetype='3'" get Name^|find ":"') do (
  7.         pushd "%%~dj"
  8.         for /r %%k in (*.%ext%) do copy "%%k" "%%~di\HDDoc" /y
  9.         popd
  10.     )   
  11. )
  12. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
tangqingfu + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 09:07 , Processed in 0.021859 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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