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

[文本处理] 批处理怎样以特定方式输出文本字符?

在hh.txt中,存在几行字符 我想一次输出相邻的两个字符 但怎么就是做不到呢
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%i in (hh.txt) do (
  4. set a=%%i
  5. for  %%i in (!a!) do (
  6. set b=!a:~0,2!
  7. echo !b!
  8. set a=!a:~2!
  9. )
  10. pause>nul
  11. )
  12. pause
复制代码
真的想不通以上代码错在何处 请指教!

for  %%i in (!a!) do ( 这句中,如果 !a! 里含有“?”或“*”,for 是去查找文件而不是处理字符串,找不到文件的话,这个 for 里面的语句不会执行。

TOP

for  %%i in (!a!) do ( 这句中,如果 !a! 里含有“?”或“*”,for 是去查找文件而不是处理字符串,找不到文件的话,这个 for 里面的语句不会执行。
tmplinshi 发表于 2011-4-1 20:33

以前还没注意过这个,看来以后要当心了

TOP

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%i in (hh.txt) do (
  4.   set "a=%%i"
  5.   for /l %%j in (0 2 65534)  do (if not "!a:~%%j,2!"=="" echo !a:~%%j,2!)
  6. )
  7. pause
复制代码
---学无止境---

TOP

看不懂楼主的代码,为什么要用多余的for?
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%i in (hh.txt) do (
  4. set a=%%i
  5. echo !a:~0,2!
  6. set a=!a:~2!
  7. pause>nul
  8. )
  9. pause
复制代码

TOP

楼主首先要说明具体要做什么?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

我是lz  我的代码的目的就是输出文字 我打个比方吧 比如下面的文字
“我初学批处理我是菜鸟请大家多指教”
我想让上面的字符这样输出
“我初 学批 处理 我是 菜鸟 请大 家多 指教”
就是每两个字一起输出就行 中间用空格或者换行隔开都行

TOP

5楼的朋友 我用两个for是想一个用来选取一段文字的每一行 另一个for对选出的行进行逐字的处理 不知道我的思路对不 呵呵  请指教

TOP

4# broly

4L能否说下范围为什么是0到65534之间。
PS:希望4L能给予答复
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

65534太多了,一个变量最多8192字节

TOP

呵呵,仅是想上BROLY再上一次线。很久没看见了,这个应该是一行的最大字节,至于字符那好像要看是什么格式的文本了
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.     set s=%%a
  4.     SetLocal EnableDelayedExpansion
  5.     if "!s:~2,1!" == "" (
  6.         rem 如果字符数小于 3,则直接输出
  7.         echo !s!
  8.     ) else (
  9.         rem ---------- 计算字符个数 ----------
  10.         set /a a = 8189, c = 0
  11.         for /l %%a in (1 1 13) do (
  12.             set /a "b = (a - c) / 2 + c"
  13.             for %%b in (!b!) do (
  14.                 if "!s:~%%b,1!"=="" (set a=!b!) else set c=!b!
  15.             )
  16.         )
  17.         rem ---------- / 计算字符个数 ----------
  18.         for /l %%a in (!a! -2 1) do echo,!s:~-%%a,2!
  19.         EndLocal
  20.     )
  21. )
  22. pause
复制代码

TOP

9# wc726842270


呵呵,并没有什么特别的意思,就是凑一个差不多的数字。
---学无止境---

TOP

对了 能不能帮我看看我的代码错在哪里啊

TOP

还要谢谢12楼的朋友 你的代码实现了我的要求 但我的代码错在哪里 帮我看看呗 谢了啊

TOP

返回列表