标题: [文本处理] BAT调用文本某一行,如何解决空格问题? [打印本页]
作者: 1005593010 时间: 2014-7-30 07:25 标题: BAT调用文本某一行,如何解决空格问题?
各位大人:
你们好,之前我提问过一次:http://www.bathome.net/thread-30574-1-1.html- 31-M-01A 第一站 500-LC-04-A00-M1 22 1S2 江苏
- 31-M-01B 第二站 500-LC-04-A00-M2 22 1S2 江苏
复制代码
一、实现如下:输入里面任意一个都能调用里面的某一行显示在批处理中。- 您查询的信息如下:
- 站号:31-M-01A
- 站位: 第一站
- 代号:500-LC-04-A00-M1
- 公里:22
- 状态:1S2
- 城市:江苏
复制代码
比方说我的状态是 1 S2 而不是1S2 那此时显示就变成了状态是:1 而城市就变成了S2
中间不能有空格,这个有方案可以解决吗? 谢谢!
作者: CrLf 时间: 2014-7-30 21:48
修改 522235677 的代码如下:- @echo off&setlocal enabledelayedexpansion
- :1
- set /p str=输入要查询的数据:
- echo 您查询的信息如下:
- set "a="
-
- for /f "tokens=1,2,3,4,* delims= " %%a in ('cmd/v/c findstr /i /c:"^!str^!" 新建文本文档.txt') do (
- set "a=%%~nxe"
- echo.
- echo 站号:%%a
- echo 站位: %%b
- echo 代号:%%c
- echo 公里:%%d
- for %%z in (%%e) do set "城市=%%z"&set "状态=!a:%%z=!"
- echo 状态:!状态:$=!
- echo 城市:!城市:$=!
-
- )
- if not defined a echo 没有记录!
- set /p c=输入1继续查询,输入0退出:
- if !c! equ 1 cls&goto 1
- if !c! equ 0 exit
- pause
复制代码
作者: 1005593010 时间: 2014-7-31 21:11
回复 2# CrLf
老大 你好,我的意思是这个样子:
简单的说:我有一个文本文档里面内容如下:- 31-M-01A 第一站 500-LC-04-A00-M1 22 1 S2 江苏
- 31-M-01B 第二站 500-LC-04-A00-M2 22 1 S2 江苏
复制代码
使用批处理编写一个查询系统:
一、实现如下:输入里面任意一个都能调用里面的某一行显示在批处理中【重点::这里状态之间1和S2之间是有个空格的】- 您查询的信息如下:
- 站号:31-M-01A
- 站位: 第一站
- 代号:500-LC-04-A00-M1
- 公里:22
- 状态:1 S2
- 城市:江苏
复制代码
如果按照- @echo off
- :1
- set /p str=输入要查询的数据:
- echo 您查询的信息如下:
- for /f "tokens=1,2,3,4,5,6 delims= " %%a in ('findstr /i "%str%" 新建文本文档.txt') do (set a=1
- echo.
- echo 站号:%%a
- echo 站位: %%b
- echo 代号:%%c
- echo 公里:%%d
- echo 状态:%%e
- echo 城市:%%f
-
- )
- if %a% neq 1 echo 没有记录!&set a=
- set /p c=输入1继续查询,输入0退出:
- if %c% equ 1 cls&goto 1
- if %c% equ 0 exit
- pause
复制代码
写的话,这个状态是1 城市就变成S2了。如何让这个批处理能够处理这样的空格,让它在状态中显示成 1 S2 而不会把空格后的内容转到下一行? 谢谢!
作者: CrLf 时间: 2014-7-31 22:52
回复 3# 1005593010
2楼回复的代码不就是照这个意思运行的吗?
作者: 34205 时间: 2015-1-22 20:39
@echo off
Mode con: cols=40 lines=30
:GO
MD temp\
cd temp\
Cls
echo =======说明区========
Echo 批处理实现-For分割-跳过空格-练习
echo =======代码区========
Echo 第1行第1列 第1行第2列 第1行第3列 >测试kong.txt
Echo 第2行第1列 第2行第2列 第2行第3列 >>测试kong.txt
Echo 第3行第1列 第3行第2列 第3行第3列 >>测试kong.txt
echo 开始测试...
for /f "tokens=*" %%i in (测试kong.txt) do echo %%i
echo 以上正确的*分割
Ping -n 2 127.1>nul
for /f "delims=" %%i in (测试kong.txt) do echo %%i
Echo 以上无定义符号分割
Ping -n 2 127.1>nul
for /f %%i in (测试kong.txt) do echo %%i
Echo 以上无参数分割
Ping -n 2 127.1>nul
set "空格= "
set "tab= "
for /f "eol=; tokens=1 delims=%空格%%tab%" %%i in (测试kong.txt) do echo %%i
Echo 以上多个命令分割
Ping -n 2 127.1>nul
echo =======退出区=======
:Out
echo.
echo 退出.......
Ping -n 30 127.1>nul
exit /b
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |