标题: [文件操作] 【已解决】批处理如何将硬盘上所有Doc文档自动复制U盘指定文件夹? [打印本页]
作者: tangqingfu 时间: 2013-6-6 14:00 标题: 【已解决】批处理如何将硬盘上所有Doc文档自动复制U盘指定文件夹?
本帖最后由 tangqingfu 于 2013-6-9 15:23 编辑
在一台Win 7+Office 2010的电脑上测试下面的代码(在Win XP+office 2003可以通过),运行后出现提示信息是:指定的路径无效
请教是什么原因,和系统及office版本有关吗?该如何解决?- @echo off&setlocal enabledelayedexpansion
- rem 将硬盘上所有Doc文档自动复制U盘指定文件夹HDDoc中
- set ext=Doc
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do set "up=%%i\"
- if not exist "%up%\HDDoc\" md "%up%\HDDoc\"
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
- >$t.em dir /s /b !exts! 2>nul
- for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码
作者: Batcher 时间: 2013-6-6 14:48
- setlocal enabledelayedexpansion
- set ext=Doc
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do set "up=%%i\"
- if not exist "%up%\HDDoc\" md "%up%\HDDoc\"
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
- >$t.em dir /s /b !exts!
- for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码
代码保存为C:\test.bat
开始
运行
cmd
C:\test.bat
结果贴出来看看
作者: tangqingfu 时间: 2013-6-6 16:01
回复 2# Batcher
Batcher兄的意思是否是:
将代码保存为名为“test”的bat文件,并将其置于C盘的盘符下?
然后点击“开始/运行”,输入“CMD”,在弹出的CMD窗口中输入“C:\test.bat”?
等明天上午测试后再向你汇报测试结果(能否请Batcher兄提前透露这样做有何用途?)
作者: Batcher 时间: 2013-6-6 16:18
回复 3# tangqingfu
是的。目的是查看执行过程,以便确认是什么地方出错了。
作者: terse 时间: 2013-6-6 16:47
前面 for 里 这样试
没 WIN7 环境 你试下- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do for /f %%j in ("%%i") do set "up=%%j\"
- if not exist "%up%\HDDoc\" md "%up%\HDDoc\"
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do (
- for /f %%j in ("%%i") do set "exts=!exts! %%j\*.%ext%"
- )
复制代码
作者: apang 时间: 2013-6-6 18:14
- @echo off
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID') do echo "%%i\"
- pause
复制代码
xp上显示:
Win7上显示:
问题出在最后一行的 \" 上面
可以用find过滤- @echo off
- for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID^|find ":"') do echo "%%~dpi"
- pause
复制代码
作者: tangqingfu 时间: 2013-6-7 12:32
回复 5# terse
运行后好像提示“ff&不是内部命令或批处理程序”这样的内容。
作者: tangqingfu 时间: 2013-6-7 12:36
回复 6# apang - @echo off&setlocal enabledelayedexpansion
- rem 将硬盘上的指定类型Doc文件自动复制U盘指定文件夹HDDoc
- set ext=Doc
- for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get DeviceID^|find ":"') do echo "%%~dpi"
- if not exist "%up%\HDDoc\" md "%up%\HDDoc\"
- for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype='3'" get DeviceID') do set "exts=!exts! %%i\*.%ext%"
- >$t.em dir /s /b !exts! 2>nul
- for /f "delims=" %%i in ($t.em) do copy "%%i" "%up%\HDDoc"
复制代码
代码可以正常运行,但会将U盘的内容也复制过去,好像是全盘复制了。
不知如何修改,使之只交硬盘上的doc文档复制到U盘中(U盘中的doc文档不复制)?
Batcher兄的方法忘记测试,等明天再测试(实在不好意思)
作者: terse 时间: 2013-6-7 12:50
如过滤可行 那你在第二个FOR 里也用过滤哦
应该是不可见字符作怪
原记得 FOR 可过滤的啊
还是贴下运行结果吧
作者: xxpinqz 时间: 2013-6-7 16:51
把你自己代码的:复制代码
- if exist %%i\nul set "up=%%i\"
复制代码
你代码要稍微改改,要是你没插U盘看看会出什么后果。
作者: tangqingfu 时间: 2013-6-7 18:09
回复 10# xxpinqz
能否请xxpinqz兄明示?
作者: Batcher 时间: 2013-6-7 18:26
回复 11# tangqingfu
能否请你自己测试一下?
作者: Batcher 时间: 2013-6-7 21:54
回复 13# 学习处理
哪个删除指定文件夹的?
作者: tangqingfu 时间: 2013-6-8 07:09
回复 10# xxpinqz
对于bat代码知之甚少,不知如何修改,能否请xxpinqz兄帮忙写个完整的代码?
作者: apang 时间: 2013-6-8 07:41
还没搞定啊?如此这般试下。。。- @echo off
- rem 将硬盘上所有Doc文档自动复制U盘指定文件夹HDDoc中
- set "ext=Doc"
- for /f "delims=" %%i in ('wmic logicaldisk where "drivetype='2'" get Name^|find ":"') do (
- md "%%~di\HDDoc\" 2>nul
- for /f "delims=" %%j in ('wmic logicaldisk where "drivetype='3'" get Name^|find ":"') do (
- pushd "%%~dj\"
- for /r %%k in (*.%ext%) do copy "%%k" "%%~di\HDDoc\" /y
- popd
- )
- )
- pause
复制代码
作者: xxpinqz 时间: 2013-6-8 13:09
回复 17# tangqingfu
不敢,我也是初学者。
18楼代码不就可以了。
原来6楼和9楼两位均已提醒过要注意的地方了。
作者: tangqingfu 时间: 2013-6-9 15:06
回复 18# apang
谢谢apang兄的分享,测试通过!
作者: tangqingfu 时间: 2013-6-9 15:07
回复 21# xxpinqz
18楼的代码测试通过,谢谢各位的关注及帮助!
作者: Batcher 时间: 2013-6-9 15:13
回复 23# tangqingfu
你现在知道为什么18楼的代码可以,1楼的代码不可以了吗?
作者: tangqingfu 时间: 2013-6-9 15:19
回复 24# Batcher
惭愧,对于bat代码知之甚少,处于门外摸索、学习阶段。暂时无力理解,愧对各位了!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |