楼 主
用批处理,获取当前用户名,然后替换文件中的字符?
发表于 2010-04-17 07:30 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
请教:如何用dos批处理,获取当前xp系统用户名,然后替换MirrorDir.ini文件中的administrator?
现在知道的命令有:
echo %username% 显示当前用户名
echo %username%>a.txt 将显示结果添加到a.txt中
但如何用批处理,将xp系统当前用户名,替换MirrorDir.ini文件中的administrator呢?
要求:只要一运行批处理文件,就可以马上修改MirrorDir.ini文件。
不想用别的软件实现,多谢。
MirrorDir.ini文件文件内容如下:
LastTask=0
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 ]
第 2 楼
发表于 2010-04-17 07:40 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
我建立了一个批处理文件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=
第 3 楼
发表于 2010-04-17 07:41 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
主要是:
StartupRun=
DeleteOthers=
这2个地方,后面的1没有添加上。
好像这个echo命令,无法将数字1添加到文件里?
[ Last edited by ygqiang on 2010-4-17 at 07:45 ]
第 4 楼
发表于 2010-04-17 07:46 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
而且我使用的方法,有点复杂了。
没有别的简单的方法了吗?
第 5 楼
发表于 2010-04-17 15:58 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
第 6 楼
发表于 2010-04-17 16:15 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
@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 ]
第 7 楼
发表于 2010-04-17 16:20 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
或者
@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 ]
第 8 楼
发表于 2010-04-17 21:12 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
多谢楼上。
我的那个方法,已经找到解决方法了。
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
第 9 楼
发表于 2010-04-17 21:47 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
echo DeleteOthers=1 1>>MirrorDir.ini
写成
>>MirrorDir.ini echo DeleteOthers=1
第 10 楼
发表于 2010-04-17 21:57 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
多谢楼上。
我试过了。
echo DeleteOthers=1 1>>MirrorDir.ini
写成
>>MirrorDir.ini echo DeleteOthers=1
这2个,实际使用效果是一样的。不需要修改。
第 11 楼
发表于 2010-04-17 21:58 · 中国 北京 鹏博士BGP
新手上路
★
积分 13 发帖 13 注册 2010-04-16 21:35 16年会员 UID 164766 性别 男
状态 离线
第 12 楼
发表于 2010-04-18 00:48 · 中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039 发帖 897 注册 2009-03-01 15:34 17年会员 UID 140302 性别 男 来自 在地狱中仰望天堂
状态 离线
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
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正