Board logo

标题: 不能输出理想的文本文件,请大家帮忙。【已解决】 [打印本页]

作者: 516526966     时间: 2009-5-14 13:52    标题: 不能输出理想的文本文件,请大家帮忙。【已解决】
现有一个批处理文件abc.bat 内容为:



@echo off
cls
echo.
echo. ╭─────────╮
echo. ╭───┤ 选择如下操作 ├───╮
echo. │ ╰─────────╯ │
echo. │ │
echo. │ A. 好运天使 │
echo. │ │
echo. │ B. 中国CN-DOS │
echo. │ │
echo. │ Y.麻烦大家了 │
echo. │ │
echo. ╰─────────────────╯
echo.
echo. 大家好,欢迎光临中国DOS联盟
echo.
echo. 为什么总是这么笨呢?
echo.
echo. 请求大家啊帮忙。
echo.
pause>nul
exit


我的意愿是在abc.bat批处理文件开头加上一段代码,使得abc.bat中指定的内容输出到a.txt中,得到的a.txt的内容是


╭─────────╮
╭───┤ 选择如下操作 ├───╮
│ ╰─────────╯ │
│ │
│ A. 好运天使 │
│ │
│ B. 中国CN-DOS │
│ │
│ Y.麻烦大家了 │
│ │
╰─────────────────╯




请求高手的指点和帮助


谢谢了。

Last edited by 516526966 on 2009-5-18 at 02:48 ]

作者: 516526966     时间: 2009-5-15 05:26
麻烦大虾们给指点一下,谢谢了。。。

作者: netbenton     时间: 2009-5-15 07:03
@echo off&setlocal enabledelayedexpansion
(
for /f "tokens=1,* delims=." %%a in ('type "%~dpnx0"') do (
set str=%%b
if "!str!" equ " ╭─────────╮" set r=y
if defined r echo;!str!
if "!str!" equ " ╰─────────────────╯" set r=
))>a.txt
exit
@echo off
cls
echo.
echo. ╭─────────╮
echo. ╭───┤ 选择如下操作 ├───╮
echo. │ ╰─────────╯ │
echo. │ │
echo. │ A. 好运天使 │
echo. │ │
echo. │ B. 中国CN-DOS │
echo. │ │
echo. │ Y.麻烦大家了 │
echo. │ │
echo. ╰─────────────────╯
echo.
echo. 大家好,欢迎光临中国DOS联盟
echo.
echo. 为什么总是这么笨呢?
echo.
echo. 请求大家啊帮忙。
echo.
pause>nul
exit


Last edited by netbenton on 2009-5-15 at 12:03 ]

作者: 516526966     时间: 2009-5-15 13:55
Originally posted by netbenton at 2009-5-15 07:03 AM:
@echo off&setlocal enabledelayedexpansion
(
for /f "tokens=1,* delims=." %%a in ('type "%~dpnx0"') do (
set str=%%b
if "!str!" equ " ╭─ ...


非常感谢您的回复,再麻烦大侠一点事情。如果我有如下的脚本:

@echo off
cls
echo.
echo. ╭─────────╮
echo. ╭───┤ 选择如下操作 ├───╮
echo. │ ╰─────────╯ │
echo. │ │
echo. │ A. 好运天使 │
echo. │ │
echo. │ B. 中国CN-DOS │
echo. │ │
echo. │ Y.麻烦大家了 │
echo. │ │
echo. ╰─────────────────╯
echo.
echo. ╭─────────╮
echo. ╭─┤ 选择如下操作 ├─╮
echo. │ ╰─────────╯ │
echo. │ │
echo. │ A. 好运天使 │
echo. │ │
echo. │ B. 中国CN-DOS │
echo. │ │
echo. │ Y.麻烦大家了 │
echo. │ │
echo. ╰─────────────╯
echo ╔═══════════════╗
echo. ║ ‖ ║
echo ║ A.为人民服务 ‖ e.你是个好人 ║
echo. ║ ‖ ║
echo. ║ B.为人民服务 ‖ f.你是个好人 ║
echo. ║ ‖ ║
echo ║ C.为人民服务 ‖ g.你是个好人 ║
echo. ║ ‖ ║
echo. ║ D.为人民服务 ‖ h.你是个好人 ║
echo. ║ ‖ ║
echo. ╚═══════════════╝
echo.
echo. 大家好,欢迎光临中国DOS联盟
echo.
echo. 为什么总是这么笨呢?
echo.
echo. 请求大家啊帮忙。
echo.
pause>nul
exit


想得到下面的结果,应该怎样来解决。
能不能麻烦您把代码讲一下。

预想得到结果如下:

╭─────────╮
╭───┤ 选择如下操作 ├───╮
│ ╰─────────╯ │
│ │
│ A. 好运天使 │
│ │
│ B. 中国CN-DOS │
│ │
│ Y.麻烦大家了 │
│ │
╰─────────────────╯

╭─────────╮
╭─┤ 选择如下操作 ├─╮
│ ╰─────────╯ │
│ │
│ A. 好运天使 │
│ │
│ B. 中国CN-DOS │
│ │
│ Y.麻烦大家了 │
│ │
╰─────────────╯
╔═══════════════╗
║ ‖ ║
║ A.为人民服务 ‖ e.你是个好人 ║
║ ‖ ║
║ B.为人民服务 ‖ f.你是个好人 ║
║ ‖ ║
║ C.为人民服务 ‖ g.你是个好人 ║
║ ‖ ║
║ D.为人民服务 ‖ h.你是个好人 ║
║ ‖ ║
╚═══════════════╝




也就是说,批处理中有多行代码和多个框,

我是想只让它输出所有的框到文本,其他的过滤掉。

再次感谢!!!!


Last edited by 516526966 on 2009-5-15 at 14:00 ]

作者: netbenton     时间: 2009-5-15 14:07
@echo off&setlocal enabledelayedexpansion
(
for /f "tokens=1,* delims=." %%a in ('type "%~dpnx0"') do (
set str=%%b
if "!str:╭─=!" neq "!str!" set r=y
if "!str:╔═=!" neq "!str!" set r=y
if defined r echo;!str!
if "!str:╰─=!" neq "!str!" set r=
if "!str:╚═=!" neq "!str!" set r=
))>a.txt
exit


Last edited by netbenton on 2009-5-17 at 06:30 ]

作者: 516526966     时间: 2009-5-17 07:46
Originally posted by netbenton at 2009-5-15 02:07 PM:
@echo off&setlocal enabledelayedexpansion
(
for /f "tokens=1,* delims=." %%a in ('type "%~dpnx0"') do (
set str=%%b
if "!str!" equ " ...


上述代码经测试,失败,只能提取第一个框,

我查了findstr的相关资料,代码如下:


for /f "delims=" %%i in ('findstr /r "╭ │ ╰ ╔ ║ ╚ ┋ 〖 『" %0') do echo %%i>>temp0.txt


再想办法去掉echo

作者: netbenton     时间: 2009-5-17 08:40
@echo off&setlocal enabledelayedexpansion
(
for /f "delims=" %%a in ('type "%~dpnx0"') do (
set str=%%a
if "!str:╭─=!" neq "!str!" set r=y
if "!str:╔═=!" neq "!str!" set r=y
if defined r echo; !str:~5!
if "!str:╰────────────=!" neq "!str!" set r=
if "!str:╚═=!" neq "!str!" set r=
))>a.txt
start a.txt
exit



for /f "tokens=1,* delims=. " %%i in ('findstr /r "╭ │ ╰ ╔ ║ ╚ ┋ 〖 『" %0') do echo %%j>>temp0.txt


Last edited by netbenton on 2009-5-17 at 06:43 ]

作者: 516526966     时间: 2009-5-18 02:46
Originally posted by netbenton at 2009-5-17 08:40 AM:
@echo off&setlocal enabledelayedexpansion
(
for /f "delims=" %%a in ('type "%~dpnx0"') do (
set str=%%a
if "!str:╭─=!" neq "!str!" ...



十分感谢,问题终于解决了。谢谢!~~!~~

作者: jlty258     时间: 2009-6-9 10:54
弱弱的问一下,那些曲线怎么输出到文档里面的,无法理解