中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 08:47
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 有关两个BAT问题的求助,请帮忙解决,谢谢
可打印版本  800 / 9
第1楼 raythunder 发表于 2009-01-29 15:21
初级用户 发帖 30 积分 47
有关两个BAT问题的求助,请帮忙解决,谢谢

转移自 DOS疑难解答 & 问题讨论 (解答室)
明显发错版块。虽属论坛新手,但注册也有一年多了,应该对论坛有所熟悉了,适当的扣分予以提醒。
——管理员





我对BAT比较感兴趣,所以常弄弄,现在遇到两个问题,想了一些时间也没能解决,
所以现在想请各位精通BAT的朋友帮个忙,
第一个问题是:我想做一个BAT,用它来提取一个路径
这个路径是在注册表中的,大家都知道从注册表里导出来的注册表文件,路径都是用
双斜杠("\\")来标的,而不是用单斜杠("\")来标志的。
现在就拿QQ的安装路径来做个比如说吧。
以下是我做的提取路径的前面部分,后面做不出来

@Echo off
reg export HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ\ 1.txt
for /f "tokens=1* delims==" %%i in ('find /I "=" 1.txt') do echo %%j >2.txt

如果你的QQ安装在C:\program files\tencent\qq\下
那么你在1.txt里得到的是下面这段:

Windows Registry Editor Version 5.00


"Install"="C:\\Program Files\\Tencent\\QQ\\"

而在2.txt里得到的是:

"C:\\Program Files\\Tencent\\QQ\\"

而我现在想要得到 C:\Program Files\Tencent\QQ\ 这样一个形式的显示,
该怎么做呢?
当然,大家也不需要从我做的这个前面两句着手,可以完全用自己的方法。
只要结果能得到 C:\Program Files\Tencent\QQ\ 这个形式就可以了。

我尝试过下面的方法

@Echo off
reg export HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ\ 1.txt
for /f "tokens=1* delims==" %%i in ('find /I "=" 1.txt') do echo %%j >2.txt
set /a n=2
:loop
set /a m=%n%+1
find /i "\\" %n%.txt >NUL
if %errorlevel%==0 set /a n=%n%+1&& for /f "tokens=1* delims=\\" %%i in ('type %n%.txt') do echo %%i\%%j >%m%.txt&&goto loop

但结果,只能得到 "C:\Program Files\\Tencent\\QQ\\" 而且是无止尽的循环

希望各位精通BAT的朋友能顺便帮我指出一下,上面这段批中出的问题在哪里。
不胜感激。



第一种方法是 Slore 提供的,在我原来的基础上使用了set的功能,有点类似重命名。
用最小改动达到要求。实在。
感谢 Slore ,具体如下:

第二种方法,是 tireless 提供的,改进了我的做法,一步到位。精简。
感谢 tireless






第二个问题,说起来比较简单,就是我想给一个文件夹里的每个文件都加上序列号,应该怎么做呢?
举例说明一下:假设我在D盘下有一个文件夹MP3,里面有很多歌,我现在想不改变歌曲的名字,
仅在歌曲前面加上01,02,03……这样的序列号,应该怎么做呢?




第二个问题,Slore 朋友让我去搜索,没想到关键字。
结果有朋友发贴询问有关两个文本行对行合并的问题。
地址在这:http://www.cn-dos.net/forum/viewthread.php?tid=45985&fpage=4
有朋友做出来了回答,于是偷师于此,解决了我的问题
具体于下:



[ Last edited by raythunder on 2009-2-9 at 15:21 ]
第2楼 raythunder 发表于 2009-01-31 15:34
初级用户 发帖 30 积分 47
发贴至今有三天了.浏览量有四十一,
高手们怎么还没过完年来上网呢?
或许这个时候发贴真不是时候。

看到有个问题讨论的版就进来了,没想到进错了地方.
感谢Manager斧正!!!
继续期待结果.

这些天,在家里,上网不方便,但每隔几天我会来看看结果.
希望路过的朋友,顺便顶一下,
别让帖子沉了.
一直期待结果中……
第3楼 slore 发表于 2009-01-31 15:42
铂金会员 发帖 2,478 积分 5,212
...

set a=C:\\Program Files\\Tencent\\QQ\\
set a=%a:\\=\%
echo %a%
第4楼 raythunder 发表于 2009-01-31 15:48
初级用户 发帖 30 积分 47
感谢 Slore 有回帖
结果出来了
想请问一下
set a=%a:\\=\%
这句应该怎么理解?
第5楼 slore 发表于 2009-01-31 15:50
铂金会员 发帖 2,478 积分 5,212
替换\\为\

set /? 好好看下吧。

重命名的那个,论坛也有很多帖子了,善用搜索。
第6楼 raythunder 发表于 2009-01-31 15:53
初级用户 发帖 30 积分 47
多谢 Slore 解惑
第二个问题能一起解决吗?
第7楼 slore 发表于 2009-01-31 19:28
铂金会员 发帖 2,478 积分 5,212
论坛,搜索吧。很多例子
第8楼 tireless 发表于 2009-01-31 23:08
银牌会员 发帖 1,122 积分 2,025
@Echo off
reg export HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ\ 1.txt
for /f "tokens=1* delims==" %%i in ('find /I "=" 1.txt') do echo %%~fj >2.txt

这样可以变双斜杠为单斜杠。
第9楼 raythunder 发表于 2009-02-01 15:09
初级用户 发帖 30 积分 47
%~fI - 将 %I 扩充到一个完全合格的路径名
感谢 tireless 又提供新的一种方法.
第10楼 raythunder 发表于 2009-02-09 15:22
初级用户 发帖 30 积分 47
感谢各位朋友的帮助及论坛相关帖子帮助.
TKS
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023