Board logo

标题: [文件操作] 如何搜指定文件夹的指定文件,并复制到桌面改名? [打印本页]

作者: yimi300    时间: 2008-3-22 16:44     标题: 如何搜指定文件夹的指定文件,并复制到桌面改名?

以前我做网吧维护,我就经常用到一些批处理,这给我的日常维护带来了很大的方便~
但我也只是知道一些简单的DOS命令,遇到复杂的操作还得上网来求助,
今天偶然发现这个论坛,真是不错,我要好好学习一下批处理,
以前以为批处理只是一个DOS命令的小集合,但看了论坛上的几篇帖之后,发现这东西不次于编程~

但学习有一个阶段,现手头有一急用,求哪位高手帮我一下~

求:
在电脑搜索指定名称目录(可能是多个),
找到指定目录后,搜索指定名称文件(可能是多个),
搜索到指定文件后复制到系统桌面,
并改名(因为是同名文件,只有改名),
最后结果是桌面上有多个"1","2","3"......的文件

我想,要凭我的能力学出来这套东西,得几天之后了,所以请高手先帮我搞定,谢谢啦~

[ 本帖最后由 yimi300 于 2008-3-22 20:20 编辑 ]
作者: 随风    时间: 2008-3-22 17:16

首先,欢迎新会员的加入。
同时也有几点建议:
1、标题一定要与主题内容相关,具体要求以在顶楼给出链接。
2、你的问题,批处理能做到。
   你所说的多个目录和文件,是事先排列在某个txt文件里的么?还是运行批处理时临时输入?
   这种情况最好能一次性把条件说清楚。如果可能最好能给出部分样本文件。
3、请尽快修改标题及完善你的提问。









.....

[ 本帖最后由 随风 于 2008-3-22 17:22 编辑 ]
作者: yimi300    时间: 2008-3-22 20:29

用一个批处理文件最好~自己在批处理修改就行了,比如在批处理用(*******)代替,
我只是搜索一个文件名,但这个文件可能有多个!
类似于U盘病毒的文件!
举例,我要搜索到所有分区里的TEMP文件夹里面123.exe,并改名复制到桌面,而TEMP文件夹之外的123.exe我不要!
可能我的电脑里有几十个叫TEMP的文件夹里含有123.exe,我要分别把他们都找到并复制到桌面上,供我研究!
作者: 随风    时间: 2008-3-22 21:34

:
  1. @echo off
  2. :: 设置文件名
  3. set "wjm=123.exe"
  4. ::设置目录名
  5. set "ml=temp"
  6. for %%a in (c d e f g h) do (
  7.   cd/d %%a:
  8.   for /r %%i in (%ml%) do (
  9.     if exist "%%i" (
  10.    if exist "%%i\%wjm%" call :loop "%%i\%wjm%"
  11. )))
  12. pause&exit
  13. :loop
  14.   set /a max+=1
  15.   if exist "%userprofile%\桌面\%max%.exe" goto loop
  16.   copy /y "%~1" "%userprofile%\桌面\%max%.exe"
  17. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-3-22 21:37 编辑 ]
作者: foxJL    时间: 2008-3-22 22:04

  1. @echo off
  2. ::在每一分区根目录下运行,文件会移动到当前根目录下的[123]文件夹内。
  3. setlocal enabledelayedexpansion
  4. set fname=123.exe
  5. set list=temp
  6. md %~d0\123>nul 2>nul
  7. for /f %%i in ('dir /s /b %fname%') do (
  8.         set fd=%%~pi
  9.         set fd=!fd: =:!
  10.         set fd=!fd:\= !
  11.         for %%j in (!fd!) do (set fd=%%j)
  12.         set fd=!fd::= !
  13.         if "!fd!"=="%list%" (
  14.                 set /a n+=1
  15.                 move "%%i" %~d0\123\
  16.                 ren "%~d0\123\%fname%" "!n!%fname%"
  17.         )
  18. )
  19. pause
复制代码

[ 本帖最后由 foxJL 于 2008-3-22 22:07 编辑 ]
作者: 希望的寄托    时间: 2008-3-23 09:57

呵呵呵,学习了,正好我以前也是做维护的,这下又学到了巡查和版主的知识
作者: 希望的寄托    时间: 2008-3-23 10:12

老大出现了五个同样的图标在administrator的桌面上
作者: yimi300    时间: 2008-3-24 14:22

哇,巡查真棒,在我头脑里没有一点头绪的事,竟然这么简单就搞定啦?太神奇啦,学习代码中.....
版主提供的是另一种方式,虽然不是我想用的,但在某种情况下,用来处理木马病毒还是非常有用的,先收藏中.....

顺便请教下,如下这些红色的命令及函数,在哪里能查到?
我只知其中一些常用的,还有很多都没见过,在哪有那种例表什么的,什么查?
我在置顶的帖里看到有个代码大全,进去看了也不是我说那种啊~
@echo off
:: 设置文件名
set "wjm=123.exe"
::设置目录名
set "ml=TEMP"
for %%a in (c d e f g h) do (
  cd/d %%a:
  for /r %%i in (%ml%) do (
    if exist "%%i" (
   if exist "%%i\%wjm%" call :loop "%%i\%wjm%"
)))
pause&exit
:loop
  set /a max+=1
  if exist "%userprofile%\桌面\%max%.exe" goto loop
  copy /y "%~1" "%userprofile%\桌面\%max%.exe"
goto :eof
作者: 随风    时间: 2008-3-24 14:58

你是说cmd的基本命令吗?
运行下面的代码
具体命令的帮助运行  命令/?
:
  1. @echo off
  2. help
  3. pause
复制代码

作者: yimi300    时间: 2008-3-24 16:37

原帖由 随风 于 2008-3-24 14:58 发表
你是说cmd的基本命令吗?
运行下面的代码
具体命令的帮助运行  命令/?
echo off
help
pause


哦,谢谢,

我忘了DOS里自带的帮助命令了,呵呵~

再请教一下,像你帮我弄的那个代码,其中关于搜索的命令太复杂,看的我头晕了,
可能是我用的功能多了,所以乱了,
如果我不查找指定目录,只查找指定文件呢?怎么修改?
这样代码就应该易懂了吧~
作者: bless    时间: 2008-9-4 17:29

学到很多呀,多谢各位的讨论。
作者: wwjpl    时间: 2008-9-10 20:30

今天刚注册,就看到了几位大大的回帖,受教了。




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