Board logo

标题: [文本处理] [已解决]more命令输出到变量,求助去除显示内容的尾巴 [打印本页]

作者: zzz19760225    时间: 2023-9-4 23:09     标题: [已解决]more命令输出到变量,求助去除显示内容的尾巴

本帖最后由 zzz19760225 于 2023-9-5 09:54 编辑

1.txt
  1. 123
  2. 456
  3. 789
复制代码
2.bat
  1. @echo off
  2. more 1.txt ^|%a%
  3. echo:%a%
  4. pause
复制代码
执行显示
  1. 123
  2. 456
  3. 789
  4. —— More (100%) ——
复制代码
只需要
  1. 123
  2. 456
  3. 789
复制代码
请帮忙看一看,去掉这个尾巴?
作者: Nsqs    时间: 2023-9-4 23:29

方法:
  1. @echo off
  2. for /f "delims=" %%1 in ('more 1.txt')do set /a n+=1&call set #%%n%%=%%1
  3. set #
复制代码
读取方式:
  1. for /f "tokens=2* delims==" %%1 in ('set #')do (echo %%1)
复制代码

作者: qixiaobin0715    时间: 2023-9-5 08:44

楼主何苦非要用more呢。个人觉得楼上也是伪变量,是由3个变量分别接收3行字符,那样的话直接显示不就行了:
  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do echo,%%i
  3. pause
复制代码
如果文本文件字符不多的话,可以把整个文本设置为一个变量(包括换行),以前的大佬们是这样处理的:
  1. @echo off
  2. set hh=^
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in (a.txt) do (
  5. set "str=!str!!hh!%%i"
  6. )
  7. echo,!str!
  8. pause
复制代码
上面代码中的两个空行要保留,不能删除。
作者: zzz19760225    时间: 2023-9-5 09:43

本帖最后由 zzz19760225 于 2023-9-5 09:52 编辑

开始试着type 1.txt ^| %a%后面跟管道时,直接尝试用变量。然后就又想可不可以直接变量,然后只有more好些,type那个出错信息不知道怎么2>nul关闭,于是看看more有没有知道的什么参数,或其他思路。
如果直接变量最好

估计只是开始命令执行的信息,根本没有输入到变量,只是以为有输出了,变量顺序就执行了。应该问题本身就提错了,因为问题不成立。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2