中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理,获取当前用户名,然后替换文件中的字符?
作者:
标题: 用批处理,获取当前用户名,然后替换文件中的字符? 上一主题 | 下一主题
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『楼 主』:  用批处理,获取当前用户名,然后替换文件中的字符?

请教:如何用dos批处理,获取当前xp系统用户名,然后替换MirrorDir.ini文件中的administrator?
现在知道的命令有:
echo %username%    显示当前用户名
echo %username%>a.txt  将显示结果添加到a.txt中

但如何用批处理,将xp系统当前用户名,替换MirrorDir.ini文件中的administrator呢?

要求:只要一运行批处理文件,就可以马上修改MirrorDir.ini文件。
不想用别的软件实现,多谢。

MirrorDir.ini文件文件内容如下:
[CommonSetting]
LastTask=0
[新任务1]
MainDir=C:\Documents and Settings\Administrator\桌面
ImageDir=d:\0beifen
MainDirHistory=C:\Documents and Settings\Administrator\桌面
ImageDirHistory=d:\0beifen
Excludes=
StartupRun=1
DeleteOthers=1

[ Last edited by ygqiang on 2010-4-17 at 07:41 ]

2010-4-17 07:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 2 楼』:  

我建立了一个批处理文件0.bat,内容如下:

md d:\0beifen

echo [CommonSetting]>MirrorDir.ini
echo LastTask=0>>MirrorDir.ini
echo [新任务1]>>MirrorDir.ini
echo MainDir=%userprofile%\桌面>>MirrorDir.ini
echo ImageDir=d:\0beifen>>MirrorDir.ini
echo MainDirHistory=%userprofile%\桌面>>MirrorDir.ini
echo ImageDirHistory=d:\0beifen>>MirrorDir.ini
echo Excludes=>>MirrorDir.ini
echo StartupRun=1>>MirrorDir.ini
echo DeleteOthers=1>>MirrorDir.ini


但处理完以后,MirrorDir.ini内容显示如下,不太正确啊

[CommonSetting]
[新任务1]
MainDir=C:\Documents and Settings\Administrator\桌面
ImageDir=d:\0beifen
MainDirHistory=C:\Documents and Settings\Administrator\桌面
ImageDirHistory=d:\0beifen
Excludes=
StartupRun=
DeleteOthers=

2010-4-17 07:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 3 楼』:  

主要是:

StartupRun=
DeleteOthers=

这2个地方,后面的1没有添加上。

好像这个echo命令,无法将数字1添加到文件里?

[ Last edited by ygqiang on 2010-4-17 at 07:45 ]

2010-4-17 07:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 4 楼』:  

而且我使用的方法,有点复杂了。

没有别的简单的方法了吗?

2010-4-17 07:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 5 楼』:  

各位,没有解决方法了吗?

多谢啊

2010-4-17 15:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 6 楼』:  


@echo off&setlocal enabledelayedexpansion
for /F "delims=" %%a in (MirrorDir.ini) do set/a n+=1&set a=%%a&set "hanye_!n!=!a:Administrator=%username%!"
(for /l %%b in (1,1,%n%) do echo.!hanye_%%b!)>MirrorDir.ini
[ Last edited by Hanyeguxing on 2010-4-17 at 16:16 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-17 16:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  

或者
@echo off&setlocal enabledelayedexpansion
for /F "delims=" %%a in (MirrorDir.ini) do set a=%%a&set "a=!a:Administrator=%username%!"&>>hanye.txt echo.!a!
del /q /f MirrorDir.ini
ren hanye.txt MirrorDir.ini
再或者直接使用第三方命令如sed或fr等,例如
fr MirrorDir.ini -fic:Administrator -t:%username%
[ Last edited by Hanyeguxing on 2010-4-17 at 16:25 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-17 16:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 8 楼』:  

多谢楼上。

我的那个方法,已经找到解决方法了。

echo [CommonSetting]>MirrorDir.ini
echo LastTask=0>>MirrorDir.ini
echo [新任务1]>>MirrorDir.ini
echo MainDir=%userprofile%\桌面>>MirrorDir.ini
echo ImageDir=d:\0beifen>>MirrorDir.ini
echo MainDirHistory=%userprofile%\桌面>>MirrorDir.ini
echo ImageDirHistory=d:\0beifen>>MirrorDir.ini
echo Excludes=>>MirrorDir.ini
echo StartupRun=1 1>>MirrorDir.ini
echo DeleteOthers=1 1>>MirrorDir.ini

2010-4-17 21:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 9 楼』:  

echo DeleteOthers=1 1>>MirrorDir.ini
写成
>>MirrorDir.ini echo DeleteOthers=1



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-17 21:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 10 楼』:  

多谢楼上。

我试过了。

echo DeleteOthers=1 1>>MirrorDir.ini
写成
>>MirrorDir.ini echo DeleteOthers=1

这2个,实际使用效果是一样的。不需要修改。

2010-4-17 21:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ygqiang
新手上路





积分 13
发帖 13
注册 2010-4-16
状态 离线
『第 11 楼』:  

这是我最终想要的软件:桌面文件定时备份

2010-4-17 21:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 12 楼』:  

1,echo.%var%>>a.txt这样写时,要%var%中最后一个字符不能是数字
2,所以加空格如echo.%var% >>a.txt来解决,但这样会造成每行最后面有一个空格
3,>>a.txt echo.%var%这样即不用担心%var%最后一个字符是否是数字,行后也不会多出空格
4,你的echo.%var% 1>>a.txt实际就是echo.%var% >>a.txt



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-18 00:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: