无忧启动论坛

标题: 批处理大神 [打印本页]

作者: 永恒心锁    时间: 2016-9-13 09:29
标题: 批处理大神
@echo off
set "FileName=KANCSvr.ini"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V) do (
  if exist %%a:\nul (
     pushd %%a:\
     for /r %%b in (%FileName%) do if exist "%%b" echo.%%b
>> .\KAVCSvr.ini echo [KANCSvr]
>> .\KAVCSvr.ini echo KANCSvr=%%b
     popd
))
pause


为什么我输出不到文件

需要怎么改?
请批处理大神指点一下
谢谢

作者: 窄口牛    时间: 2016-9-13 10:02
echo 内容>>文件
作者: 窄口牛    时间: 2016-9-13 10:03
写反了
作者: 永恒心锁    时间: 2016-9-13 10:08
窄口牛 发表于 2016-9-13 10:03
写反了

妳测试了吗?
我在没有发帖子之前都这样做过 没有用的
作者: wimboot    时间: 2016-9-13 10:12
set "FileName=KANCSvr.ini" 隐号去掉
最后)) 装修括号换一行
)
)
作者: 窄口牛    时间: 2016-9-13 10:17
我没有测,手机上的。只能看语法。楼上也是说的语法。
作者: 永恒心锁    时间: 2016-9-13 10:23
wimboot 发表于 2016-9-13 10:12
set "FileName=KANCSvr.ini" 隐号去掉
最后)) 装修括号换一行
)



按照你说的
变成了这样...
作者: wimboot    时间: 2016-9-13 10:37
永恒心锁 发表于 2016-9-13 10:23
按照你说的
变成了这样...

你去百度文库里找个:CMD命令行高级教程 学习一下
作者: wimboot    时间: 2016-9-13 10:43
永恒心锁 发表于 2016-9-13 10:23
按照你说的
变成了这样...

for /r %%b in (%FileName%) do if exist "%%b" (
echo [KANCSvr]>>KAVCSvr.ini
echo KANCSvr=%%b>>KAVCSvr.ini
)
作者: 永恒心锁    时间: 2016-9-13 10:51
wimboot 发表于 2016-9-13 10:43
for /r %%b in (%FileName%) do if exist "%%b" (
echo [KANCSvr]>>KAVCSvr.ini
echo KANCSvr=%%b>>KAV ...



没有生成KAVCSvr.ini文件

作者: 一小团花火    时间: 2016-9-13 10:54
围观一下下
作者: captain_g    时间: 2016-9-13 11:01
这两行
>> .\KAVCSvr.ini echo [KANCSvr]
>> .\KAVCSvr.ini echo KANCSvr=%%b
改成
>> .\KAVCSvr.ini echo. [KANCSvr]
>> .\KAVCSvr.ini echo. KANCSvr=%%b
即可在各分区根目录下生成 KAVCSvr.ini 文件!

如果原来各分区根目录下没有 KAVCSvr.ini 文件,则 KAVCSvr.ini 的内容为:
[KANCSvr]
KANCSvr=%b

但是,如果原来有 KAVCSvr.ini 文件,则上面的内容会添加到其中,每运行一次批处理将添加一次。
作者: 永恒心锁    时间: 2016-9-13 11:02
wimboot 发表于 2016-9-13 10:43
for /r %%b in (%FileName%) do if exist "%%b" (
echo [KANCSvr]>>KAVCSvr.ini
echo KANCSvr=%%b>>KAV ...

@echo off
set FileName=KANCSvr.ini
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V) do (
  if exist %%a:\nul (
     pushd %%a:\
for /r %%b in (%FileName%) do if exist "%%b" (
echo [KANCSvr]>>C:\KAVCSvr.ini
echo KANCSvr=%%b>>C:\KAVCSvr.ini
)
)
)
pause
貌似这样可以
作者: wimboot    时间: 2016-9-13 11:05
永恒心锁 发表于 2016-9-13 10:51
没有生成KAVCSvr.ini文件

如图

搜索.png (37.87 KB, 下载次数: 54)

搜索.png

作者: captain_g    时间: 2016-9-13 11:07
#12的回复只是针对#1的问题,即能否生成KAVCSvr.ini文件,加一个点就可以了;

至于在何处生成,生成的内容,生成的文件是否会对原来文件产生影响,则是你需要处理的。
作者: 不知    时间: 2016-9-13 12:53
永恒心锁 发表于 2016-9-13 10:51
没有生成KAVCSvr.ini文件

if exist "%%b" 应改为 if exist %%b
作者: wimboot    时间: 2016-9-13 13:04
不知 发表于 2016-9-13 12:53
if exist "%%b" 应改为 if exist %%b

改成 if exist "%%~b"
作者: yfwang0798    时间: 2016-9-13 21:37
1  首先你的批处理要实现什么目的,要用文字写出来,免得别人瞎猜。
2   if exist %%a:\nul
这条命令就是错的,就算驱动器中没有任何文件和文件夹,每个驱动器也包含 .  和 ..,不可能为空
3  而且在根目录上也无法创建 nul文件或文件夹。
所以,你的批处理根本不会达到你的目的

作者: zlgs    时间: 2016-9-13 23:04
定向的文件名写绝对路径测试一下
作者: nttwqz    时间: 2016-9-14 11:24
楼主都没说清楚自己想干什么……
作者: 永恒心锁    时间: 2016-9-14 16:55
yfwang0798 发表于 2016-9-13 21:37
1  首先你的批处理要实现什么目的,要用文字写出来,免得别人瞎猜。
2   if exist %%a:\nul
这条命令就是 ...

这个批处理,我是在脚本之家 找到的.
作者: nttwqz    时间: 2016-9-14 22:55
  1. @echo off
  2. set "FileName=KANCSvr.ini"
  3. echo 正在搜索,请稍候...
  4. for /f %%a in ('wmic volume get driveletter ^| find ":"') do (
  5.         pushd %%a\
  6.         for /r %%b in (%FileName%) do (
  7.                 if exist "%%b" (
  8.                         echo;%%b>>"%%b"
  9.                         echo [KANCSvr]>>"%%b"
  10.                         echo KANCSvr=%%b>>"%%b"
  11.                         echo 已更改 %%b
  12.                 )
  13.         )
  14. )
  15. pause
复制代码

作者: wimboot    时间: 2016-9-15 12:21
本帖最后由 wimboot 于 2016-9-15 12:28 编辑
nttwqz 发表于 2016-9-14 22:55


很高深 我特别喜欢'wmic volume get driveletter ^| find ":"'
谢谢大师指教
作者: wimboot    时间: 2016-9-15 14:07
nttwqz 发表于 2016-9-14 22:55

我想把'wmic volume get driveletter ^| find ":"'用在PE里替换上面的笨方法寻找分区 结果效率太低了 还是放弃了
作者: nttwqz    时间: 2016-9-15 15:00
本帖最后由 nttwqz 于 2016-9-15 15:02 编辑
wimboot 发表于 2016-9-15 14:07
我想把'wmic volume get driveletter ^| find ":"'用在PE里替换上面的笨方法寻找分区 结果效率太低了 还 ...


你的WinPE里面还能用wmic?功能挺全的哈~

这里有更全的方法

http://www.bathome.net/thread-31884-1-1.html
作者: wimboot    时间: 2016-9-15 16:15
本帖最后由 wimboot 于 2016-9-15 17:08 编辑
nttwqz 发表于 2016-9-15 15:00
你的WinPE里面还能用wmic?功能挺全的哈~

这里有更全的方法


我的PE不能用wmic 效率太低我就没添加内核组件

你推荐的网站 很好 我觉得mountvol效率高 可以换了
作者: nttwqz    时间: 2016-9-15 19:37
wimboot 发表于 2016-9-15 16:15
我的PE不能用wmic 效率太低我就没添加内核组件

你推荐的网站 很好 我觉得mountvol效率高 可以换了

正常系统还可以吧,上面的批处理我改写文件到执行结束也只不过用了不到15秒钟(也或许是批处理有问题),两个分区90多G数据,本来我估计的,这么多数据,怎么也得1分钟。

话说,wmic第一次使用是要安装的,除此之外没感觉到效率地下啊?
作者: wimboot    时间: 2016-9-15 22:43
nttwqz 发表于 2016-9-15 19:37
正常系统还可以吧,上面的批处理我改写文件到执行结束也只不过用了不到15秒钟(也或许是批处理有问题), ...

第一次运行很慢 PE也仅运行第一次还很慢 除非是改造过的PE
作者: wimboot    时间: 2016-9-15 22:51
nttwqz 发表于 2016-9-15 19:37
正常系统还可以吧,上面的批处理我改写文件到执行结束也只不过用了不到15秒钟(也或许是批处理有问题), ...

wmic需要的内核也比较多 有点不利于精简PE
作者: 永恒心锁    时间: 2016-9-18 09:32
非常感谢大家的帮助




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3