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

[文本处理] 批处理怎样添加汉字行号?

要怎么学好批处理?
可潜水看帖,静静研究;
可看教程做习题,然后解决实际的问题;
也可二者并用取其优,当然还有其他方法。
你是怎么做的呢?
以上文本有五行,要求显示如下:(行号可为大写,但必须是汉字)

要做成下面的样子:
一┃要怎么学好批处理?
二┃可潜水看帖,静静研究;
三┃可看教程做习题,然后解决实际的问题;
四┃也可二者并用取其优,当然还有其他方法。
五┃你是怎么做的呢?

本人做的代码如下:
@echo off & setlocal enabledelayedexpansion
set "k=一二三四五"
set m=0
for /f %%i in (a.txt) do (
    set x=%%i
    echo !k:~%m%,1!|!x!
    set /a m+=1
    )
pause
为什么我做不能实现上述的任务,而关键的问题在于!k:~%m%,1!不能实现截取k的字符,所以想问高手如何能用变量再在变量中截取字符。谢谢!
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%b in (零 壹 贰 叁 肆 伍 陆 柒 捌 玖) do set #!n!=%%b&set/a n+=1
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do echo !#%%a!^|%%b
  4. pause
复制代码

[ 本帖最后由 yangfengoo 于 2010-10-26 21:13 编辑 ]
1

评分人数

TOP

在FOR中最好加上 "delims="  否则在行中如果有空格的话会分隔开。
你的代码运行不了是因为没有给特殊符号“|”加上转义符 ^ 。加上就可以了!
  1. @echo off & setlocal enabledelayedexpansion
  2. set "k=一二三四五"
  3. set m=0
  4. for /f "delims=" %%i in (a.txt) do (
  5. set x=%%i
  6. echo !k:~%m%,1!^|!x!
  7. set /a m+=1
  8. )
  9. pause
复制代码

[ 本帖最后由 gshccr 于 2010-10-26 21:27 编辑 ]

TOP

原帖由 yangfengoo 于 2010-10-26 21:11 发表
@echo off&setlocal enabledelayedexpansion
for %%b in (零 壹 贰 叁 肆 伍 陆 柒 捌 玖) do set #!n!=%%b&set/a n+=1
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do echo !#%%a!^|%%b
pause

红的改成
for %%b in (零 壹 贰 叁 肆 伍 陆 柒 捌 玖) do set !n!=%%b&set/a n+=1
提示语法不正确可是 还是能被定义 为什么? echo !1!!2!!3!显示壹贰叁

TOP

第一次迭代时,n未定义,set !n!=%%b 即 set =%%b,当然是语法不正确。

TOP

返回列表