找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31884|回复: 7

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

[复制链接]
发表于 2016-10-16 18:50:21 | 显示全部楼层 |阅读模式
本帖最后由 hongrk 于 2016-10-16 22:04 编辑

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

评分

参与人数 2PB +2 收起 理由
Batcher + 4 感谢给帖子标题标注[已解决]字样
pcl_test -2 发帖前先使用论坛搜索

查看全部评分

 楼主| 发表于 2016-10-16 19:32:51 | 显示全部楼层
我搞好了 不用麻烦各位了  OK
发表于 2016-10-16 19:57:07 | 显示全部楼层
  1. rem win7及以上系统运行
  2. powershell -c "(gc 'a.txt') -replace '\*'"&pause
复制代码
 楼主| 发表于 2016-10-16 21:13:26 | 显示全部楼层
本帖最后由 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
)


我去搜索看看
 楼主| 发表于 2016-10-16 22:03:59 | 显示全部楼层
回复 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
发表于 2024-12-8 16:34:25 | 显示全部楼层
回复 2# hongrk


    请问怎么解决的?我现在也遇到这个问题
发表于 2024-12-8 20:14:27 | 显示全部楼层
回复 6# tsqingfeng


    一个一个字符的判断
参考
http://www.bathome.net/thread-6038-1-1.html
发表于 2024-12-9 11:23:57 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:11 , Processed in 0.018997 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表