Board logo

标题: [文本处理] 批处理如何删除txt文本末尾最后几个字符? [打印本页]

作者: 953427    时间: 2014-12-17 09:38     标题: 批处理如何删除txt文本末尾最后几个字符?

本帖最后由 pcl_test 于 2016-9-8 11:54 编辑

我再一个文件夹下有很多TXT文件,但是每个文件的最后8个字符都是没用的想删掉,批处理该怎样实现这个功能呢?我刚刚接触批处理,基础很差,请高手们指点,谢谢!
作者: DAIC    时间: 2014-12-17 12:29

请举个例子吧
作者: 953427    时间: 2014-12-17 12:52

2014/12/11        1296
2014/12/12        1305
2014/12/15        1280
2014/12/16        1270
数据截止数据截止

有很多文本文件,每一个文本里的数据又很多。只截取一个文本里的末尾的部分,想把“数据截止数据截止”删掉。
作者: DAIC    时间: 2014-12-17 13:44

回复 3# 953427
  1. sed -i "/数据截止数据截止/d" *.txt
复制代码

作者: 953427    时间: 2014-12-17 15:49

试用一下,没有反应啊?求助是为什么呢?
作者: 慕夜蓝化    时间: 2014-12-17 16:13

@echo off
setlocal enabledelayedexpansion
for %%a in (*txt) do (
    echo,%%~a >nul
    set α=%%~nxa
    call :a "%%~nxa"
)
pause&exit

:a
(for /f "usebackq delims= eol=数" %%i in ("%~1") do (
    echo,%%i
))>$a
move $a "!α!" >nul
goto :eof

根据你的情况应该可以使用忽略的。
是所有的txt文件。
如果不使用外部命令的话,可以一用。
作者: 慕夜蓝化    时间: 2014-12-17 16:14

刷新了一下。。
>_< !
作者: 953427    时间: 2014-12-17 16:15

研究一下,谢谢啦!
作者: 慕夜蓝化    时间: 2014-12-17 16:34

回复 5# 953427


  他提供的代码需要一个外部命令,叫做sed.exe,你看他的签名档那里有的,下载后,放到system32文件夹下就好了。
作者: pcl_test    时间: 2016-9-8 12:01

本帖最后由 pcl_test 于 2016-11-8 14:42 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 删除文本最后一行
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* "文本.txt"') do (
  4.     if defined line echo;!line!
  5.     set "line=%%b"
  6. )
  7. pause
复制代码
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文本.txt"&pause&exit
  2. WSH.Echo(WSH.StdIn.ReadAll().replace(/[^\r\n]{8}[\r\n]*$/,''));
复制代码

作者: Alt32    时间: 2017-9-30 20:30

  1. findstr /i /v "数据截止数据截止" *.txt
复制代码





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