标题: [文本处理] [已解决]批处理提取时怎样去掉空格? [打印本页]
作者: sbjatje 时间: 2010-9-15 11:16 标题: [已解决]批处理提取时怎样去掉空格?
我有一个文件,1.txt里面内容如下:
PTC HOSTID = 00-1D-7D-74-B5-C7
现在我想取00-1D-7D-74-B5-C7 这几个字符用于后面的替换
但是用"tokens=2 delims==" 会把00-1D-4D-41-B5-C7前面的那个空格也取到,因为这里是以=分段,取第二段,就以就有一个空格,如果我不想要这个空格,应该在下面程序里如何修改,,,,(我试了下,用空格分段也是不行的)- cd setup\4.0crack
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a
- (for /f "delims=" %%i in (ptc_licfile.txt) do (
- set str=%%i
- set str=!str:00-00-00-00-00-00=%mac%!
- echo !str!
- ))>tmp_
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
[ 本帖最后由 sbjatje 于 2010-9-15 15:47 编辑 ]
作者: TX_kakashi 时间: 2010-9-15 11:54
用tokens=*读一下就无视前面的空格了应该
作者: sbjatje 时间: 2010-9-15 12:32 标题: 语法,上应该如何写呀,,
就帮我在上面改下吧!
作者: Batcher 时间: 2010-9-15 13:00
- @echo off
- set /p str=<1.txt
- echo,%str%
- set "mac=%str:~-17%"
- echo,%mac%
复制代码
作者: Batcher 时间: 2010-9-15 13:01 标题: 回复 2楼 的帖子
你没看懂楼主的问题吧
作者: sbjatje 时间: 2010-9-15 14:06 标题: Batcher 老大
这里如果我想把你这个倒取字符的指令,写到我上面的批处理里,应该写在那个位置....
请老大出招,,,,,
作者: TX_kakashi 时间: 2010-9-15 14:26 标题: 回复 5楼 的帖子
lz代码里变量%mac%的值是:[ 00-1D-4D-41-B5-C7]
所以我用:- for /f "tokens=*" %%a in ("%mac"%) echo %%a
复制代码
来输出:[ 00-1D-4D-41-B5-C7]
因为变量截取还不熟练,所以用了for来解决了。
作者: TX_kakashi 时间: 2010-9-15 14:30
还不熟练,学着用变量截取试试:- cd setup\4.0crack
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a && set "_mac=%mac:~-17%"
- (for /f "delims=" %%i in (ptc_licfile.txt) do (
- set str=%%i
- set str=!str:00-00-00-00-00-00=%_mac%!
- echo !str!
- ))>tmp_
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
[ 本帖最后由 TX_kakashi 于 2010-9-15 14:32 编辑 ]
作者: sbjatje 时间: 2010-9-15 14:35 标题: 这个也不行,
执行起来没有任何反映,,,,,无法达到替换的效果
[ 本帖最后由 sbjatje 于 2010-9-15 14:41 编辑 ]
作者: TX_kakashi 时间: 2010-9-15 14:38
忘记用延迟变量了。- cd setup\4.0crack
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims==" %%a in (d:\1.txt) do set “mac=%%a” && set "_mac=!mac:~-17!"
- (for /f "delims=" %%i in (ptc_licfile.txt) do (
- set str=%%i
- set str=!str:00-00-00-00-00-00=%_mac%!
- echo !str!
- ))>tmp_
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
[ 本帖最后由 TX_kakashi 于 2010-9-15 15:34 编辑 ]
作者: sbjatje 时间: 2010-9-15 15:03 标题: 这样还是不行
00-00-00-00-00没有被00-1D-7D-74-B5-C7替换
作者: TX_kakashi 时间: 2010-9-15 15:35
你是不是1.txt的路径错了?我测试没问题呀
作者: sbjatje 时间: 2010-9-15 15:40 标题: 我自己这样改了下,好了,,,
不知道如何修改,再去静静的把for指令的用法看了一次,,,看到一句相当经典的话,for/f 语句中如果没有用 delims= 默认以空格键或跳格键作为分隔符号....- echo off
- echo 现在开始为你替换电脑的id号
- d:
- cd d:\4.0crack
- setlocal enabledelayedexpansion
- for /f "tokens=4 " %%a in (d:\1.txt) do set mac=%%a
- (for /f "delims=" %%i in (ptc_licfile.txt) do (
- set "str=%%i"
- set "str=!str:00-00-00-00-00-00=%mac%!"
- echo,!str!
- ))>tmp_
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
这样就ok了
以空格为分隔 取第4节
感谢楼上的各位老大的帮助....
作者: cui1988wei 时间: 2010-9-15 20:19
- @echo off
- set /p var=<1.txt
- echo %var%
- set var="%var: 00=/00%"
- for /f "tokens=2 delims=/" %%i in (%var%) do echo %%i
- pause
复制代码
作者: sgaizxt001 时间: 2010-9-16 00:17
把for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a改为
- for /f "tokens=2 delims==" %%a in (d:\1.txt) do (
- set mac=%%a
- set mac=!mac: =!
- )
复制代码
就可以了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |