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

[文本处理] 批处理怎样替换包含空格的字符串?

  1. setlocal ENABLEDELAYEDEXPANSION
  2. for /f  "delims=" %%i in ( c:\bat3.txt ) do (
  3. set var=%%i
  4. set var=!var:Timing, TOTAL TIME (CREATE CUBE)=Timing!
  5. echo !var! >> c:\newbat3.txt
  6. )
  7. PAUSE
复制代码
用这段代码替换 如果!var:a=b! 是这样的字母好使,但是如果中间有空格 就不好用了
其实我想把Timing, TOTAL TIME (CREATE CUBE)整个在文本中删除。多谢
目前是一个批处理初学者,问的傻问题还请多多见谅

感觉是)号的问题,试试改成:
set "var=!var:Timing, TOTAL TIME (CREATE CUBE)=Timing!"

TOP

set "str1=Timing, TOTAL TIME (CREATE CUBE)"
set "var=!var:str1="

TOP

“想把Timing, TOTAL TIME (CREATE CUBE)整个在文本中删除”为什么还要在=后指定Timing呢?
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. (for /f  "delims=" %%i in (c:\bat3.txt) do (
  3.     set "var=%%i"
  4.     set "var=!var:Timing, TOTAL TIME (CREATE CUBE)=!"
  5.     echo;!var!
  6. ))> c:\newbat3.txt
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

4# hanyeguxing

因为我觉得不能没东西 我一直没试出来 呵呵 明天再试试 谢谢版主
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

2# zm900612
憨豆 你是说我的括号是中文吗 应该不是这个问题吧 我是从日志里截取的啊
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

感觉是)号的问题,试试改成:
set "var=!var:Timing, TOTAL TIME (CREATE CUBE)=Timing!"
zm900612 发表于 2011-4-27 14:18

憨豆 版主的都可以

憨豆为啥要加双引号 是因为括号吗
目前是一个批处理初学者,问的傻问题还请多多见谅

TOP

你在1楼中发的两个都是英文的 Timing, TOTAL TIME (CREATE CUBE)
((前面是英文后面是中文
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

因为()是语块的分隔符,若在语句内含有不应该用于划分语句的)而未转义或加双引号,常会被错误划分:
  1. setlocal ENABLEDELAYEDEXPANSION
  2. for /f  "delims=" %%i in ( c:\bat3.txt ) do 【(
  3. set var=%%i
  4. set var=!var:Timing, TOTAL TIME (CREATE CUBE)】=Timing!
  5. echo !var! >> c:\newbat3.txt
  6. )
  7. PAUSE
复制代码

TOP

9# zm900612
【】这中文大括号是什么意思?

TOP

只是用来提示命令解释器将哪两个括号作为一对来划分,不是代码的内容
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 yjstone 于 2011-5-1 10:41 编辑

这样就可以了:
  1.     setlocal ENABLEDELAYEDEXPANSION
  2.    for /f  "delims=" %%i in ( c:\bat3.txt ) do (
  3.     set var=%%i
  4.    set var=!var:Timing, TOTAL TIME ^(CREATE CUBE^)=Timing!
  5.     echo !var! >> c:\newbat3.txt
  6.     )
  7.    PAUSE
复制代码

TOP

还可以更简洁一些:
  1. for /f  "delims=" %%i in ( c:\bat3.txt ) do (
  2.    set var=%%i
  3.    call echo %%var:Timing, TOTAL TIME ^(CREATE CUBE^)=Timing%%>>c:\newbat3.txt
  4.    )
  5.    PAUSE
复制代码

TOP

返回列表