[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]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
复制代码
请帮忙看一看,去掉这个尾巴?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

方法:
  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)
复制代码
1

评分人数

TOP

楼主何苦非要用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
复制代码
上面代码中的两个空行要保留,不能删除。
1

评分人数

TOP

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

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

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

TOP

返回列表