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

[文本处理] 求删除文件内容的批处理

删除文本里面时间为0点至早8点的内容
文件名是   ch_8.6.lsv

文件在D盘 根目录不确定 XP系统

"23:41:22 321 阿萨德 倒萨                                       保留                     
"23:57:42 223 qedsadas                                        保留
"00:01:11 333 dsa dsa a                                        删除
"00:01:11 000   啊啊2... 是是3    ".” 的撒打                删除
"02:05:22 ssd  03:08:48 asd sadsa dsad               删除
"08:35:11 大声道阿萨德三等功反倒是桂丰大厦               保留
"09:01:11 水电费双方都撒 10:08:09 反倒是                保留

本帖最后由 flyinnet9 于 2015-9-17 16:29 编辑

目录不确定,你这是让人全盘搜索的节奏啊,还好你没说在哪个盘不知道。。。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::全盘搜索文件,并赋值到%%i
  4. for /f "delims=" %%i in ('dir /s /b d:\ch_8.6.lsv') do (
  5.   ::分割字串,使用空格符,并赋值第一个空格前部给%%a,后部给%%b
  6.   for /f "usebackq tokens=1* delims= " %%a in ("%%i") do (
  7.     set str=%%a & rem 赋值%%a到str
  8.     set str=!str:~1,2! & rem 取str的第2位和第三位,即小时部分
  9.     if "!str:~0,1!"=="0" set /a str=!str:~1!  & rem 判断时间避免16进制冲突
  10.     if !str! gtr 7 echo %%a %%b>>$ & rem 丢弃不需要部分
  11.   )
  12. move /y $ "%%i" & rem 文件改名
  13. )
复制代码

TOP

目录不确定,你这是让人全盘搜索的节奏啊,还好你没说在哪个盘不知道。。。
flyinnet9 发表于 2015-9-17 15:37

很好用 求命令讲解 我想小小修改 谢谢大神

TOP

回复 3# 2220108515


    已改

TOP

回复  2220108515


    已改
flyinnet9 发表于 2015-9-17 16:29



    放桌面上 不能使用啊

TOP

回复 5# 2220108515


    测试没问题,用没注释的试试
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /s /b d:\ch_8.6.lsv') do (
  4.   for /f "usebackq tokens=1* delims= " %%a in ("%%i") do (
  5.     set str=%%a
  6.     set str=!str:~1,2!
  7.     if "!str:~0,1!"=="0" set /a str=!str:~1!
  8.     if !str! gtr 7 echo %%a %%b>>$
  9.   )
  10. move /y $ "%%i"
  11. )
复制代码

TOP

本帖最后由 会飞的蜗牛丶 于 2015-9-17 17:13 编辑

提供一个笨笨的方法
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if exist temp.txt (del f /a /q temp.txt)
  4. type ch_8.6.lsv|>>temp.txt findstr /n "\"0^[0-7]"
  5. for /f "tokens=1,* delims=:" %%i in (temp.txt) do (
  6. set str=!str! /c:"%%i:"
  7. )
  8. for /f "tokens=2,* delims=:" %%i in ('findstr /n /v /c:"sbsbsbsb" ch_8.6.lsv^|findstr /b /v %str%') do (
  9. echo %%i:%%j
  10. )
复制代码

TOP

楼上代码2B了
请用这个
  1. type ch_8.6.lsv|findstr /v /n "\"0^[0-7]"
复制代码

TOP

返回列表