Board logo

标题: [文件操作] 批处理全盘搜索指定文件 [打印本页]

作者: bluewing009    时间: 2009-11-30 17:46     标题: 批处理全盘搜索指定文件

原创,  请管理员移至原创区(目前本人权限不足)

网吧里去玩war3时经常没有地图,但是各个网吧war3的路径不同,带来很大麻烦
现用一下代码可实现。


代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  4.     call set a=%%i
  5.     for /f "delims=" %%j in ('dir /a /b /s !a:~-2!\War3.exe') do (
  6.            echo %%j
  7.            copy "%~dp0\冰峰王座\真三国无双3.9d_AI.w3x" "%%~dpj\maps\"
  8.            copy "%~dp0\冰峰王座\DotA Allstars AI CN.w3x" "%%~dpj\maps\"
  9.                      
  10. )
  11. )
  12. echo 完成
  13. pause
复制代码


代码意义:本文只是个例子,  如果将war3.exe和对应的copy命令修改,即可达到自己需要的目的。
同时 请看第3行,这个一些用c:d:e:f甚至是26个字母全写上的.....汗~~)的人一些启示


PS:我尽量发一些具有普遍意义的代码,需要请对应修改。什么事情都做好,你永远不能进步。DIY吧~~~

[ 本帖最后由 bluewing009 于 2009-12-1 10:26 编辑 ]
作者: Batcher    时间: 2009-11-30 22:12

相关讨论:批处理全盘搜索指定文件获取其完整路径
http://bbs.bathome.net/thread-3465-1-1.html
作者: bluewing009    时间: 2009-12-1 10:23     标题: 回复 2楼 的帖子

很明显  不如用for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
这个更好,你用cde   还要写26个字母哦
作者: Batcher    时间: 2009-12-1 11:11     标题: 回复 3楼 的帖子

1、fsutil和wmic等方法都挺好的,但是如果能够注明对操作系统的要求、对系统用户权限的要求,那就更好了。

2、关于代码的长短和效率之间的取舍,更多讨论见:批处理代码是越短越好吗?
http://bbs.bathome.net/thread-4026-1-1.html
作者: bluewing009    时间: 2009-12-1 12:39     标题: 回复 4楼 的帖子

关于代码简化的问题,
相对来说如果是教学讨论,当然用人人都能理解的东东。
但是对于成品,如何用最简短最高效完成。这时,for套上3层都是可以理解的。

对于我这个贴子,因为不同电脑, 驱动器盘符不同,所以我放弃的(cdef)的写法,当然 用的东西相对多了一小块。面向跟广泛。  所以根本不存在一些特殊要求。
有些bat要求用户放在特定的地方 或者调整系统才行,  我认为这样不是很好。
作为 编写者,我们应考虑更广泛的面 而不是去要求用户干什么。

反过来讨论这个帖子,我已经说明了 只要把 exe 和 copy 改掉即可,用了缩进 方便(最后的那个括号就直接写了)直接修改成自己想要的。
作者: zqz0012005    时间: 2009-12-1 13:02

请继续无视4楼“对操作系统的要求、对系统用户权限的要求”
fsutil

有些bat要求用户放在特定的地方,也是为了适应用户的需求。
要知道多数bat是为了解决具体问题而存在。

那些“甚至是26个字母全写上”的,有不少人是早就知道fsutil、mountvol、wmic等命令的,他们为什么还要那么写?我想可以给楼主一些启示。




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