标题: [文本处理] [已解决]批处理如何保留第一行和8到12行的内容,其它行都删除? [打印本页]
作者: dml1 时间: 2015-3-14 14:39 标题: [已解决]批处理如何保留第一行和8到12行的内容,其它行都删除?
保留第一行和8到12行的内容,其它行都删除
作者: pcl_test 时间: 2015-3-14 15:25
回复 1# dml1 - @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\txt所在文件夹"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >"new_%%a" echo %%c
- if !n! gtr 7 if !n! lss 13 >>"new_%%a" echo %%c
- set /a n+=1
- )
- )
- pause
复制代码
作者: dml1 时间: 2015-3-14 15:39
回复 2# pcl_test
怎么把删除后生成的文件保存在新建的文件夹中?
作者: pcl_test 时间: 2015-3-14 15:45
回复 3# dml1
第7行 >"D:\目标文件夹\new_%%a" echo %%c
第8行 >>"D:\目标文件夹\new_%%a" echo %%c
作者: dml1 时间: 2015-3-14 15:49
回复 4# pcl_test
能给我改好发上来吗?我不会改。
作者: pcl_test 时间: 2015-3-14 15:56
回复 5# dml1 - @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\txt所在文件夹"
- set "fdir=D:\目标文件夹"
- if not exist "%fdir%" md "%fdir%"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >"%fdir%\new_%%a" echo %%c
- if !n! gtr 7 if !n! lss 13 >>"%fdir%\new_%%a" echo %%c
- set /a n+=1
- )
- )
- pause
复制代码
作者: dml1 时间: 2015-3-14 16:06
回复 6# pcl_test
第四句:cd /d "D:\txt所在文件夹"
第五句:set "fdir=D:\目标文件夹"
新建的文件夹(目标文件夹)能不能和第四句文件夹(所在文件夹)放在同一级别的文件夹下。
作者: pcl_test 时间: 2015-3-14 16:07
回复 7# dml1
改为复制代码
作者: dml1 时间: 2015-3-14 16:33
回复 8# pcl_test
还是不对
作者: dml1 时间: 2015-3-14 16:34
回复 8# pcl_test
上面第一个图是我想要的;
上面第二个图不是我要的,现在出现的情况。
作者: pcl_test 时间: 2015-3-14 16:44
本帖最后由 pcl_test 于 2015-3-14 17:32 编辑
回复 10# dml1 - @echo off
- setlocal enabledelayedexpansion
- cd /d "C:\新建文件夹 (6)\新建文件夹 (2)\1原来的"
- set "fdir=C:\新建文件夹 (6)\新建文件夹 (2)\2想要的"
- if not exist "%fdir%" md "%fdir%"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >"%fdir%\%%a" echo %%c
- if !n! gtr 7 if !n! lss 13 >>"%fdir%\%%a" echo %%c
- set /a n+=1
- )
- )
- pause
复制代码
作者: pcl_test 时间: 2015-3-14 16:46
回复 1# dml1 - sed -i -n "1p;8,12p" *.txt
复制代码
作者: dml1 时间: 2015-3-14 16:51
回复 11# pcl_test - @echo off
- setlocal enabledelayedexpansion
- cd /d "C:\新建文件夹 (6)\新建文件夹 (2)\1原来的"
- set "fdir=C:\新建文件夹 (6)\新建文件夹 (2)\2想要的"
- if not exist "%fdir%" md "%fdir%"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >"%fdir%\new_%%a" echo %%c
- if !n! gtr 7 if !n! lss 13 >>"%fdir%\new_%%a" echo %%c
- set /a n+=1
- )
- )
- pause
复制代码
能不能不考虑路径,程序放在什么盘下或文件夹下都能运行。
作者: pcl_test 时间: 2015-3-14 16:58
回复 13# dml1
直接丢进“1原来的”文件夹里运行- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >$ echo %%c
- if !n! gtr 7 if !n! lss 13 >>$ echo %%c
- set /a n+=1
- )
- move $ "%%a"
- )
- pause
复制代码
作者: dml1 时间: 2015-3-14 17:03
回复 14# pcl_test
执行程序有问题?
作者: pcl_test 时间: 2015-3-14 17:04
回复 15# dml1
没看到“直接丢进“1原来的”文件夹里运行”??
作者: dml1 时间: 2015-3-14 17:07
回复 16# pcl_test
我想在“1原来的”文件夹外面执行。
作者: pcl_test 时间: 2015-3-14 17:10
回复 17# dml1
11楼的就是,不然批处理怎么知道你要处理的是哪个文件夹,可懂??
作者: dml1 时间: 2015-3-14 17:22
回复 18# pcl_test
不是我要的?
作者: pcl_test 时间: 2015-3-14 17:23
回复 20# dml1
不知你要什么?挺简单的问题,怎么弄的复杂?你哪里不明白?
作者: dml1 时间: 2015-3-14 17:40
回复 21# pcl_test
我想要的形式,不知道可能做到。
就是把你编写的程序和“1原来的”文件夹和新建的文件夹“2想要的”如下图放在一起。
作者: DAIC 时间: 2015-3-14 17:51
回复 22# dml1 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d "1原来的\*.txt"') do (
- set n=1
- (for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! equ 1 (
- echo,%%c
- ) else if !n! geq 8 (
- if !n! leq 12 (
- echo,%%c
- )
- )
- set /a n+=1
- ))>"2想要的\%%a"
- )
- pause
复制代码
作者: pcl_test 时间: 2015-3-14 17:56
回复 22# dml1
11楼的就是,不管你放哪里都可以,可懂?你试过没有,你不试怎么知道?
作者: dml1 时间: 2015-3-14 18:28
回复 23# DAIC
麻烦看看问题怎么解决?
作者: dml1 时间: 2015-3-14 18:36
回复 24# pcl_test
我试了,不行。
作者: pcl_test 时间: 2015-3-14 18:43
本帖最后由 pcl_test 于 2015-3-14 19:26 编辑
回复 26# dml1 - @echo off
- setlocal enabledelayedexpansion
- set "fdir=2想要的"
- if not exist "%fdir%" md "%fdir%"
- cd /d "1原来的\"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"') do (
- if !n! ==1 >"%~dp0%fdir%\%%a" echo %%c
- if !n! gtr 7 if !n! lss 13 >>"%~dp0%fdir%\%%a" echo %%c
- set /a n+=1
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |