Board logo

标题: [文件操作] [已解决]批处理怎样全盘搜索文件2并复制文件1 到文件2所在文件夹? [打印本页]

作者: 穿蓝裤头的猪    时间: 2011-8-1 22:02     标题: [已解决]批处理怎样全盘搜索文件2并复制文件1 到文件2所在文件夹?

本帖最后由 穿蓝裤头的猪 于 2011-8-3 05:09 编辑
  1. SetLocal EnableDelayedExpansion
  2. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  3. set var=%%i
  4. set drive=!var:~-2!
  5. fsutil fsinfo drivetype !drive!|find "固定">nul && for /f "delims=" %%a in ('dir/s/a-d/b !drive!\2.txt 2^>nul') do copy /y "1.txt" "%%~dpa")
复制代码
上面的代码不知道哪里出问题了 ,只能搜索当前盘符.
作者: cjiabing    时间: 2011-8-2 07:43

批处理全盘搜索指定文件获取其完整路径  http://www.bathome.net/viewthread.php?tid=3465
作者: 穿蓝裤头的猪    时间: 2011-8-2 10:48

回复 2# cjiabing
这个最简单的还凑合能看懂复杂了我就看不懂了 因为我很菜  能给个简单点的答案吗?谢谢
作者: cjiabing    时间: 2011-8-2 12:02

回复 3# 穿蓝裤头的猪


    哦,好吧,那我教教你:
    首先,你先找到一段可以进行全盘搜索的代码,——不要你上面那段,还有比这个简单的,从我提供的链接里找。
    其次,你再学习学习copy这个命令。——在cmd窗口输入  copy/?  得到帮助信息。
    做到以上两点不难,学会了就可以解决你的问题了。
作者: tmplinshi    时间: 2011-8-2 12:31

测试了楼主的代码,没有问题。
作者: 穿蓝裤头的猪    时间: 2011-8-2 20:06

回复 4# cjiabing


    谢谢你,我再研究看看,我一般都是在注册表例直接读取路径的很方便,可恶的是有的软件在注册表找不到路径我就想到这个方法了,我现在就去研究下 .
作者: 穿蓝裤头的猪    时间: 2011-8-2 20:09

回复 5# tmplinshi


    这个应该和系统没关系吧,我是W7 系统,比如说你把这个P放在C 盘运行,要搜索的文件放到D盘就搜索不到了,要搜索的文件放到和P一个盘就没问题.
作者: tmplinshi    时间: 2011-8-2 20:17

回复 7# 穿蓝裤头的猪


运行下面的代码,然后把结果贴上来:
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  4.     set var=%%i
  5.     set drive=!var:~-2!
  6.     fsutil fsinfo drivetype !drive!|find "固定">nul && (
  7.         echo !drive!
  8.     )
  9. )
  10. pause
复制代码

作者: 穿蓝裤头的猪    时间: 2011-8-2 22:23

回复 8# tmplinshi


老是提示文件过大 害我把图片截了好几次,  这个我在哪个盘运行都是显示C盘
作者: tmplinshi    时间: 2011-8-2 22:36

本帖最后由 tmplinshi 于 2011-8-2 22:46 编辑

再贴下 fsutil fsinfo drives 的结果。(贴文字就可以了)
作者: Batcher    时间: 2011-8-2 22:37

回复 9# 穿蓝裤头的猪


尽量以文字(而不是图片)的方式贴出来

Q: 怎样把CMD窗口里的结果复制出来?
A: 右键单击CMD窗口的标题栏→"属性"→"选项"→勾选"快速编辑模式"→然后在CMD窗口用鼠标左键选中想要拷贝的内容→在选中的内容上单击鼠标右键→粘贴到文本文件中即可
作者: 穿蓝裤头的猪    时间: 2011-8-3 00:44

回复 10# tmplinshi


        Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

H:\Users\Administrator>fsutil fsinfo drives

驱动器: C:\ D:\ E:\ F:\ G:\ H:\

H:\Users\Administrator>

这样所有的盘符都显示了。
作者: cjiabing    时间: 2011-8-3 00:58

本帖最后由 cjiabing 于 2011-8-3 00:59 编辑
  1. @echo off
  2. FOR %%a IN (C: D: E: F: G: H:) DO if exist %%a cd /d %%a && for /r %%i in (2.txt) do if exist "%%~i" copy /y "1.txt" "%%~dpi"
  3. pause
复制代码

作者: 穿蓝裤头的猪    时间: 2011-8-3 01:51

回复 13# cjiabing


    还是不行啊提示找不到文件。
作者: cjiabing    时间: 2011-8-3 02:43

回复 14# 穿蓝裤头的猪


    你一句话就说找不到,我都不知道你想怎么样!~
作者: cjiabing    时间: 2011-8-3 02:50

本帖最后由 tmplinshi 于 2011-8-3 12:02 编辑

修正了一下,并亲自帮你做了下试验,正在搜索……
  1. @echo off
  2. set var=%~dp0
  3. FOR %%a IN (C: D: E: F: G: H:) DO if exist %%a cd /d %%a && for /r %%i in (变形金刚3DVDscr中字.rmvb) do if exist "%%~i" echo "%%~i"&copy /y "%var%变形金刚3DVDscr中字_字幕.txt" "%%~dpi"||echo Failure
  4. pause
复制代码

作者: cjiabing    时间: 2011-8-3 02:51

成功!~
至于你信不信,反正我是信了!~
作者: 穿蓝裤头的猪    时间: 2011-8-3 05:08

回复 17# cjiabing


    终于成功了 哎非常感谢
作者: 穿蓝裤头的猪    时间: 2011-8-3 05:17

本帖最后由 穿蓝裤头的猪 于 2011-8-3 05:55 编辑

回复 17# cjiabing


    这个还是有点问题 ,不知道怎么了这个P放到桌面上运行就不管用了放在别的文件夹运行就没问题
C:\Documents\Desktop
这个是我桌面的地址,系统安装在H盘。



真怪了 我什么也没改  在桌面上运行又好了  

刚才放在系统隐藏的文件夹下运行都没问题,在普通的文件夹下不管用了又,一会好一会坏  算了我放弃了

把批处理和文件1放在文件夹A运行能复制1到文件夹B(文件2已经放在文件夹B)
把批处理和文件1放在文件夹B运行不能复制1到文件夹A (文件2已经放在文件夹A)
作者: cjiabing    时间: 2011-8-3 09:54

回复 19# 穿蓝裤头的猪


晕,有可能不支持尤盘,有必要的话你还是换一个全盘搜索代码吧,提供的链接里有。我没用过你提供的命令。
作者: tmplinshi    时间: 2011-8-3 12:03

本帖最后由 tmplinshi 于 2011-8-3 12:18 编辑
@echo off
set var=%~dp0
FOR %%a IN (C: D: E: F: G: H DO if exist %%a cd /d %%a && for /r %%i in (变形金刚3DVDscr中字.rmvb) do if exist "%%~i" echo "%%~i"© /y "%var%变形金刚3DVDscr中字_字幕.txt" "%%~dpi"||echo Failure
pausecjiabing 发表于 2011-8-3 02:50


红色的这句会出错 —— 如果当前目录为盘符的子目录,cd /d 盘符: 不会切换到盘符目录。例:
C:\Documents and Settings\Administrator>cd /d c:

C:\Documents and Settings\Administrator>

应该加一个斜线 —— cd /d 盘符:\

=======================

for /r %%i in (变形金刚3DVDscr中字.rmvb) do if exist "%%~i" echo "%%~i"
建议改为:
  1. for /r %%i in (变形金刚3DVDscr中字.rmvb?) do if /i "%%~xi" == ".rmvb" echo "%%i"
复制代码

作者: cjiabing    时间: 2011-8-3 12:15

回复 21# tmplinshi


    呵呵,谢谢!~形成习惯了,有些地方有斜杠就会发生错误,以为这里也一样。想把cd改成pushd,不懂是否可以?
作者: Hello123World    时间: 2011-8-3 14:22

原话已被无限的篡改了,铁道部发言人表示压力很大,都有人传成:“不管你们信不信我反正……”

其实原话是:“至于你们信不信,我反正是信的。”——你们怎么能说人话呢?你们得说官话啊。
作者: 穿蓝裤头的猪    时间: 2011-8-3 20:26

谢谢楼上的解答非常感谢




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