Board logo

标题: [文本处理] 【已解决】批处理如何删除/清除/去掉txt文本中所有的*星号 [打印本页]

作者: hongrk    时间: 2016-10-16 18:50     标题: 【已解决】批处理如何删除/清除/去掉txt文本中所有的*星号

本帖最后由 hongrk 于 2016-10-16 22:04 编辑

设文件名为a.txt   要转化的字符为*  将该文本里的全部*都删掉  这样的批处理该怎么做?如果单纯在批处理里显示出来的我会,可是修改文本的就不会了。
例如:
*147**8
批处理运行后变为:
1478
数字之间没有空格
请求各位帮忙,我找了很多资料都没弄明白怎么做,因为找不到。
作者: hongrk    时间: 2016-10-16 19:32

我搞好了 不用麻烦各位了  OK
作者: pcl_test    时间: 2016-10-16 19:57

  1. rem win7及以上系统运行
  2. powershell -c "(gc 'a.txt') -replace '\*'"&pause
复制代码

作者: hongrk    时间: 2016-10-16 21:13

本帖最后由 hongrk 于 2016-10-16 21:15 编辑

回复 3# pcl_test

不可以,
显示powershell 不是内部或外部命令,也不是可运行的程序或批处理文件。    我电脑是WinXP的
哎,本来是弄好了的,可是进行下一步的时候忘了备份了 然后原来找到的那地方又找不到了  我把我之前用的发出来 不过也只是大概,特殊符号少了很多,比如感叹号
@echo off
set f="a.txt"
set a=+
set b=
for /f "usebackq delims=" %%b in (%f%) do (
if not defined flag cd.>%f%&set flag=1
set v=%%b
setlocal enabledelayedexpansion
set v=%a%=%b%
echo.
endlocal
)


我去搜索看看
作者: hongrk    时间: 2016-10-16 22:03

回复 4# hongrk


    查了几十个帖子 琢磨了一会弄出来了:
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set var=%%i
set var=!var:XX=!
echo !var!>>b.txt
)
del a.txt
ren b.txt a.txt
pause
作者: tsqingfeng    时间: 2024-12-8 16:34

回复 2# hongrk


    请问怎么解决的?我现在也遇到这个问题
作者: Five66    时间: 2024-12-8 20:14

回复 6# tsqingfeng


    一个一个字符的判断
参考
http://www.bathome.net/thread-6038-1-1.html
作者: aloha20200628    时间: 2024-12-9 11:23

本帖最后由 aloha20200628 于 2024-12-9 11:36 编辑

回复 6# tsqingfeng

批处替换那些在内置替换函数句式中有语义的字符如 =~* 是不能用替换函数本身完成的,只能 ‘曲径通幽’,先用最快方法获取字符串长度再用for逐字处理。以下代码会将目标文件中的 * 字符全部删除,亦可删除 = 或 ~ 字符(在以下代码中第8行替换 * 字符即可) ...
  1. @echo off &setlocal
  2. (for /f "delims=" %%s in (1.txt) do (
  3.     set "s=%%s" &setlocal enabledelayedexpansion &set "_s=!s!" &set "sL=0"
  4.     for %%n in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
  5.         if "!_s:~%%n,1!" neq "" (set/a "sL+=%%n"&set "_s=!_s:~%%n!"))
  6.     set "_s=" &for /l %%n in (0,1,!sL!) do (
  7.         set "c=!s:~,1!" &set "s=!s:~1!"
  8.         if "!c!" neq "" if "!c!" neq "*" set "_s=!_s!!c!")
  9.     echo,!_s!&endlocal
  10. ))>2.txt
  11. pause&exit/b
复制代码
当然用 powershell 或 sed.exe 就简捷多了,一行流解决问题...

以下是 powershell 版本
  1. powershell "(gc '1.txt' -raw).replace('*', '')">2.txt
复制代码
以下是 sed.exe 版本(可从本坛第三方下载 sed.exe 落地即用)http://bcn.bathome.net/s/tool/index.html?key=sed
  1. sed "s/\*//gi" 1.txt>2.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2