标题: [文本处理] [已解决]批处理自动删除多余的答案,只保留一个答案。 [打印本页]
作者: pan528 时间: 2017-2-8 22:47 标题: [已解决]批处理自动删除多余的答案,只保留一个答案。
1、目的:希望拖入文本,自动删除多余的答案,只保留一个答案。
2、材料:
原文本:
Author: Serg Belyaev
###########
## .##@ #
# $ ...$ #
# $#*## #
# $. $ #
#### ####
###########
; Level 1
Title: level 1
Author: Serg Belyaev
Solution (pushes 38, moves 92, inlines 20, changes 14, steps 16 PMIS): rdLLLLullDRRRRRurDlllllllddrrRdrruLUdLLUUrRRRurrdLLLrrrddLUruLLrddLLdlUlluullddRRRllUluRRluR
Solution (pushes 42, moves 126, inlines 21, changes 12, steps 20 C): rdLLLLullDRRRRRurDlllllllddrrUdlluururrdLddlluRdrUUddRdrruLLLrrUdlluurRRRurrdLLrrddLLLdlUUdllulluRRluRdllddRRRdrUrrrruulDrdLLL
##########
## ###
# #.#$ ##
# *.. #
## #*#$ #
##$@ ###
## ###
##########
; Level 2
Title: level 2
Author: Serg Belyaev
Solution (pushes 24, moves 89, inlines 17, changes 14, steps 15 PMIS): dlUUURRRRllDuuurrDrDLLruullllDldRddrRuUdddrruUdLdlUlluuuurrrrdrdrdLuLLruullllddddrrrrUruL
Solution (pushes 26, moves 127, inlines 18, changes 11, steps 15 C): dlUUURRDullddrRuuuullDldRRlddrruUdddrruLdlUlluurrRRlllluurrrrDrDLLLrruullllddddrrrrUdlllluuuurrrrdrdLLrrrdLuluullllddddrrrrUruL
###########
###@ . ###
# #.#$ #
# *.* #
###$#.#$###
### $ #
#### # #
###########
; Level 3
Title: level 3
Author: Serg Belyaev
Solution (pushes 50, moves 154, inlines 27, changes 21, steps 23 PMIS): rrddddllUUddrrRRdrruLLLLuuRRDulluurrDDllLLddRdrUUUrrurrdLLLLddrRUdlluurRuullllDDRRUdddrruuLrddlluUllulldRRRRddllUdrrrrdrruLLLLuulLulldRRddRdrUrruuLrurrdLL
Solution (pushes 52, moves 218, inlines 28, changes 17, steps 28 C): rrddLLrrRRllddllUUddrrRRdrruLLLLuurrDullllddRdrUUdlluurRddrRdrruLLLLuullddRdrUlluurruurrDDDuuullddllddrrrRuuuullllDDuurrrrddddllUUUdddrruuLrddlluUllulldRRRRddllUdrruulLddrrrrdrruLLLLuullddRdrUlluuulldRRddrrrruuLrurrdLL
希望生成的文本:
Author: Serg Belyaev
###########
## .##@ #
# $ ...$ #
# $#*## #
# $. $ #
#### ####
###########
; Level 1
Title: level 1
Author: Serg Belyaev
Solution (pushes 38, moves 92, inlines 20, changes 14, steps 16 PMIS): rdLLLLullDRRRRRurDlllllllddrrRdrruLUdLLUUrRRRurrdLLLrrrddLUruLLrddLLdlUlluullddRRRllUluRRluR
##########
## ###
# #.#$ ##
# *.. #
## #*#$ #
##$@ ###
## ###
##########
; Level 2
Title: level 2
Author: Serg Belyaev
Solution (pushes 24, moves 89, inlines 17, changes 14, steps 15 PMIS): dlUUURRRRllDuuurrDrDLLruullllDldRddrRuUdddrruUdLdlUlluuuurrrrdrdrdLuLLruullllddddrrrrUruL
###########
###@ . ###
# #.#$ #
# *.* #
###$#.#$###
### $ #
#### # #
###########
; Level 3
Title: level 3
Author: Serg Belyaev
Solution (pushes 50, moves 154, inlines 27, changes 21, steps 23 PMIS): rrddddllUUddrrRRdrruLLLLuuRRDulluurrDDllLLddRdrUUUrrurrdLLLLddrRUdlluurRuullllDDRRUdddrruuLrddlluUllulldRRRRddllUdrrrrdrruLLLLuulLulldRRddRdrUrruuLrurrdLL
3、我的代码- @echo off
-
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in (%~nx1)do (
- set m=%%i
- if defined z (echo.)else echo !m!
- if "!m:~0,8!" == "Solution" (set z=%%i)else set z=
- )>>%~n1-2.txt
- endlocal
-
- pause
- goto:eof
复制代码
运行结果:
Author: Serg Belyaev
###########
## .##@ #
# $ ...$ #
# $#*## #
# $. $ #
#### ####
###########
Title: level 1
Author: Serg Belyaev
Solution (pushes 38, moves 92, inlines 20, changes 14, steps 16 PMIS): rdLLLLullDRRRRRurDlllllllddrrRdrruLUdLLUUrRRRurrdLLLrrrddLUruLLrddLLdlUlluullddRRRllUluRRluR
## ###
# #.#$ ##
# *.. #
## #*#$ #
##$@ ###
## ###
##########
Title: level 2
Author: Serg Belyaev
Solution (pushes 24, moves 89, inlines 17, changes 14, steps 15 PMIS): dlUUURRRRllDuuurrDrDLLruullllDldRddrRuUdddrruUdLdlUlluuuurrrrdrdrdLuLLruullllddddrrrrUruL
###@ . ###
# #.#$ #
# *.* #
###$#.#$###
### $ #
#### # #
###########
Title: level 3
Author: Serg Belyaev
Solution (pushes 50, moves 154, inlines 27, changes 21, steps 23 PMIS): rrddddllUUddrrRRdrruLLLLuuRRDulluurrDDllLLddRdrUUUrrurrdLLLLddrRUdlluurRuullllDDRRUdddrruuLrddlluUllulldRRRRddllUdrrrrdrruLLLLuulLulldRRddRdrUrruuLrurrdLL
每组第一行怎样都丢掉了?错在什么地方,请高手指教。谢谢!
作者: WHY 时间: 2017-2-8 23:23
for /f 默认会忽略以分号开头的行
可以这样:- @echo off & setlocal enabledelayedexpansion
- (for /f "delims="eol^= %%i in ('type "%~nx1"')do (
- set "m=%%i"
- if defined z (echo;)else echo;!m!
- if "!m:~0,8!" == "Solution" (set z=1) else (set z=)
- ))>"%~n1-2.txt"
- pause
复制代码
作者: WHY 时间: 2017-2-8 23:26
- @echo off & setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('findstr /n .* "%~nx1"')do (
- set "m=%%i" & set "m=!m:*:=!"
- if defined z (echo;)else echo;!m!
- if "!m:~0,8!" == "Solution" (set z=1) else (set z=)
- ))>"%~n1-2.txt"
复制代码
作者: pan528 时间: 2017-2-9 12:50 标题: RE: 希望自动删除多余的答案,只保留一个答案。
本帖最后由 pan528 于 2017-2-9 12:52 编辑
回复 2# WHY
谢谢回贴!
但问题如故。
“:”行丢掉不重要。
是图形的第一行丢掉了!
如:
######
# #
#$##.#
## ##.##
# @$. #
# $ #
### ###
####
运行后,变成:
# #
#$##.#
## ##.##
# @$. #
# $ #
### ###
####
你看错在哪里?
作者: pan528 时间: 2017-2-9 12:55
回复 3# WHY
这个代码OK!谢谢!
作者: WHY 时间: 2017-2-9 14:53
回复 4# pan528
这样好了:- @echo off & setlocal enabledelayedexpansion
- (for /f "delims="eol^= %%i in ('type "%~f1" ^& echo;/')do (
- set "s1=%%i"
- if defined z (echo;) else echo;!s2!
- if "!s1:~0,8!" == "Solution" (if "!s2:~0,8!" == "Solution" set z=1) else (set z=)
- set "s2=%%i"
- ))>"%~dpn1-2%~x1"
复制代码
- @if (0)==(0) echo off
- type "%~f1" | cscript //nologo //e:jscript "%~f0" > "%~dpn1-2%~x1"
- pause & exit
- @end
-
- var s = WSH.StdIn.ReadAll() + '\r\n'
- WSH.StdOut.Write(s.replace(/(^Solution)(.*\n)(\1.*\n)+/gm, '$1$2'))
复制代码
作者: pan528 时间: 2017-2-10 12:17
回复 6# WHY
谢谢回帖!
但,这两个代码都没有通过测试。
作者: WHY 时间: 2017-2-11 20:43
回复 7# pan528
我在win10测试能够运行,你用的什么系统? 与2楼也就只有绝对路径与相对路径之间的区别
把 "%~f1" 改成 "%~nx1"
把 "%~dpn1-2%~x1" 改成 "%~n1-2.txt"
试下
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |