![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 20:15 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何去掉TXT文本首尾的符 |
| 可打印版本 3,361 / 13 |
| 第1楼 newice | 发表于 2006-12-14 10:04 |
| 初级用户 发帖 24 积分 70 | |
|
如何去掉TXT文本首尾的符 set IBV存放路径=D\disk\ibv
set 机器名前缀=XP- set 客户机数量=200 if %客户机数量% leq 9 goto :9 if %客户机数量% leq 99 goto :99 if %客户机数量% leq 999 goto :999 goto :end :9 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :99 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (10,1,%客户机数量%) do echo "<device name="IBV%%i" target="%机器名前缀%0%%i" file="My Computer\%IBV存放路径%\%机器名前缀%0%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :999 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (10,1,99) do echo "<device name="IBV%%i" target="%机器名前缀%0%%i" file="My Computer\%IBV存放路径%\%机器名前缀%0%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (100,1,%客户机数量%) do echo "<device name="IBV%%i" target="%机器名前缀%%%i" file="My Computer\%IBV存放路径%\%机器名前缀%%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :end 生存后是这样的 "<device name="IBV1" target="XP-001" file="My Computer\D\disk\ibv\XP-001.ibv" mode="3" clustered="no" asyncmode="yes"/>" 就是想去掉前面的“和后面的” <device name="IBV1" target="XP-001" file="My Computer\D\disk\ibv\XP-001.ibv" mode="3" clustered="no" asyncmode="yes"/> 还有一个是取机器名的后面3个数字并定义为变量,有没更直观的方法 for /f %%i in ("%computername%") do ( set "name=%%i" call set "name=%%name:~3,4%%") |
|
| 第2楼 newice | 发表于 2006-12-14 14:52 |
| 初级用户 发帖 24 积分 70 | |
|
没有人能指点一下吗?
|
|
| 第3楼 lxmxn | 发表于 2006-12-14 15:30 |
| 版主 发帖 4,938 积分 11,386 | |
|
假设你的IBVcfg.txt的内容如下:
试试这个脚本: |
|
| 第4楼 newice | 发表于 2006-12-14 16:31 |
| 初级用户 发帖 24 积分 70 | |
|
后面的点没去掉,只去了前面的。
|
|
| 第5楼 lxmxn | 发表于 2006-12-15 01:06 |
| 版主 发帖 4,938 积分 11,386 | |
|
我能得到正确的结果啊,我的IBVcfg.txt的内容是:
得到的结果是:
你再仔细检查一下。 |
|
| 第6楼 ccwan | 发表于 2006-12-15 01:30 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
的确。lxmxn兄的代码没有问题。加分!
|
|
| 第7楼 lh82102849 | 发表于 2006-12-15 02:58 |
| 初级用户 发帖 11 积分 24 | |
|
学习了,感觉自己太差了
谢谢 |
|
| 第8楼 newice | 发表于 2006-12-15 03:20 |
| 初级用户 发帖 24 积分 70 | |
|
呵呵,还是这样的,麻烦再指点下哪里有错误
set IBV存放路径=D\disk\ibv set 机器名前缀=XP- set 客户机数量=200 if %客户机数量% leq 9 goto :9 if %客户机数量% leq 99 goto :99 if %客户机数量% leq 999 goto :999 goto :end :9 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :99 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (10,1,%客户机数量%) do echo "<device name="IBV%%i" target="%机器名前缀%0%%i" file="My Computer\%IBV存放路径%\%机器名前缀%0%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :999 for /l %%i in (1,1,9) do echo "<device name="IBV%%i" target="%机器名前缀%00%%i" file="My Computer\%IBV存放路径%\%机器名前缀%00%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (10,1,99) do echo "<device name="IBV%%i" target="%机器名前缀%0%%i" file="My Computer\%IBV存放路径%\%机器名前缀%0%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt for /l %%i in (100,1,%客户机数量%) do echo "<device name="IBV%%i" target="%机器名前缀%%%i" file="My Computer\%IBV存放路径%\%机器名前缀%%%i.ibv" mode="3" clustered="no" asyncmode="yes"/>" >>IBVcfg.txt :end rem code by lxmxn @ cn-dos.net @echo off for /f "delims=" %%a in (IBVcfg.txt) do ( setlocal enabledelayedexpansion set str=%%a set str=!str:~1,-1! echo !str! >>filename.txt ::echo 如果要输入到文件中,在echo !str!加上>>filename.txt endlocal ) pause |
|
| 第9楼 newice | 发表于 2006-12-15 03:21 |
| 初级用户 发帖 24 积分 70 | |
|
<device name="IBV1" target="XP-001" file="My Computer\D\disk\ibv\XP-001.ibv" mode="3" clustered="no" asyncmode="yes"/>"
生存后是这样的。后面还是有个点 |
|
| 第10楼 lxmxn | 发表于 2006-12-15 03:46 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re newice : 你我使用的代码并没有差别,而是由于你的IBVcfg.txt文件中的每一行后面有一个空格(仔细观察一下就可以发现了),导致批处理脚本没有达到你所要的要求。 解决方法是,再你的原代码里面,将输入重定向符号">>"前面的空格去掉,这样,生成的IBVcfg.txt文件的每一句之后就没有空格,也就可以用上面的代码来达到你的要求了。其实问题的本质,还是我的代码不健壮。 |
|
| 第11楼 namejm | 发表于 2006-12-15 03:53 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
用 for 语句的 %~i 扩展来去掉字符串首尾的引号更简洁一点:
|
|
| 第12楼 newice | 发表于 2006-12-15 04:04 |
| 初级用户 发帖 24 积分 70 | |
|
谢谢斑竹和大大的帮忙,万分感谢!!!
|
|
| 第13楼 lxmxn | 发表于 2006-12-15 04:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
版主的代码好简洁,顶一个。 但是如果文本后面有一个空格,也不能很好的解决引号的问题。 |
|
| 第14楼 vkill | 发表于 2006-12-16 10:00 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
%%~i 好
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |