[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理提取时怎样去掉空格?

我有一个文件,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前面的那个空格也取到,因为这里是以=分段,取第二段,就以就有一个空格,如果我不想要这个空格,应该在下面程序里如何修改,,,,(我试了下,用空格分段也是不行的)
  1. cd setup\4.0crack
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a
  4. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  5.   set str=%%i
  6.   set str=!str:00-00-00-00-00-00=%mac%!
  7.   echo !str!
  8. ))>tmp_
  9. del ptc_licfile.txt
  10. ren tmp_ ptc_licfile.txt
复制代码

[ 本帖最后由 sbjatje 于 2010-9-15 15:47 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

用tokens=*读一下就无视前面的空格了应该

TOP

语法,上应该如何写呀,,

就帮我在上面改下吧!

TOP

  1. @echo off
  2. set /p str=<1.txt
  3. echo,%str%
  4. set "mac=%str:~-17%"
  5. echo,%mac%
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

你没看懂楼主的问题吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

Batcher 老大

这里如果我想把你这个倒取字符的指令,写到我上面的批处理里,应该写在那个位置....
    请老大出招,,,,,

TOP

回复 5楼 的帖子

lz代码里变量%mac%的值是:[  00-1D-4D-41-B5-C7]
所以我用:
  1. for /f "tokens=*" %%a in ("%mac"%) echo %%a
复制代码
来输出:[ 00-1D-4D-41-B5-C7]
因为变量截取还不熟练,所以用了for来解决了。

TOP

还不熟练,学着用变量截取试试:
  1. cd setup\4.0crack
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a && set "_mac=%mac:~-17%"
  4. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  5.   set str=%%i
  6.   set str=!str:00-00-00-00-00-00=%_mac%!
  7.   echo !str!
  8. ))>tmp_
  9. del ptc_licfile.txt
  10. ren tmp_ ptc_licfile.txt
复制代码

[ 本帖最后由 TX_kakashi 于 2010-9-15 14:32 编辑 ]

TOP

这个也不行,

执行起来没有任何反映,,,,,无法达到替换的效果

[ 本帖最后由 sbjatje 于 2010-9-15 14:41 编辑 ]

TOP

忘记用延迟变量了。
  1. cd setup\4.0crack
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims==" %%a in (d:\1.txt) do set “mac=%%a” && set "_mac=!mac:~-17!"
  4. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  5.   set str=%%i
  6.   set str=!str:00-00-00-00-00-00=%_mac%!
  7.   echo !str!
  8. ))>tmp_
  9. del ptc_licfile.txt
  10. ren tmp_ ptc_licfile.txt
复制代码

[ 本帖最后由 TX_kakashi 于 2010-9-15 15:34 编辑 ]

TOP

这样还是不行

00-00-00-00-00没有被00-1D-7D-74-B5-C7替换

TOP

你是不是1.txt的路径错了?我测试没问题呀

TOP

我自己这样改了下,好了,,,

不知道如何修改,再去静静的把for指令的用法看了一次,,,看到一句相当经典的话,for/f 语句中如果没有用 delims= 默认以空格键或跳格键作为分隔符号....
  1. echo off
  2. echo 现在开始为你替换电脑的id号
  3. d:
  4. cd  d:\4.0crack
  5. setlocal enabledelayedexpansion
  6. for /f "tokens=4 " %%a in (d:\1.txt) do set mac=%%a
  7. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  8.     set "str=%%i"
  9.     set "str=!str:00-00-00-00-00-00=%mac%!"
  10.     echo,!str!
  11. ))>tmp_
  12. del ptc_licfile.txt
  13. ren tmp_ ptc_licfile.txt
复制代码
这样就ok了
以空格为分隔 取第4节
感谢楼上的各位老大的帮助....

TOP

  1. @echo off
  2. set /p var=<1.txt
  3. echo %var%
  4. set var="%var: 00=/00%"
  5. for /f "tokens=2 delims=/" %%i in (%var%) do echo %%i
  6. pause
复制代码

TOP

把for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a改为
  1. for /f "tokens=2 delims==" %%a in (d:\1.txt) do (
  2.   set mac=%%a
  3.   set mac=!mac: =!
  4. )
复制代码

就可以了
努力学习,努力挣分

TOP

返回列表