[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 pusofalse 于 2008-9-1 21:23 发表
这题果真难倒了新手吗,期待新手解答出此题。以下,本人的解,期待更加简洁的解。@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (
     set "var=%%a"
     if "!var:~1,1!" le ...

如就本题而言,这应该是最简洁的方案了,但如果要通用可能还是要用到set进行排序。
***共同提高***

TOP

原帖由 batman 于 2008-9-2 20:10 发表

如就本题而言,这应该是最简洁的方案了,但如果要通用可能还是要用到set进行排序。


哦。。。那么文本的格式稍微变一下。

保持原题不变呢。

只是少了行距,和多了混乱的格式而已。
  1. A111
  2. Assure
  3. A12
  4. Cons tant
  5. Smail
  6. A012
  7. Exa
  8. Explosive
  9. Weird
  10. A12345
  11. Admission
  12. A077
  13. Chant
  14. Reli gious
  15. Praise
  16. Rhyming
  17. 32987
  18. Parsley
  19. A034
  20. Faith
  21. Zealous
  22. Absorb
  23. 24980
  24. Principle
复制代码

TOP

回复 17楼 的帖子

还是一样的解法吧,只不过要麻烦了。先找出哪些是序号,在序号前补位。
不知还有什么方法。
心绪平和,眼藏静谧。

TOP

原帖由 pusofalse 于 2008-9-3 15:15 发表
还是一样的解法吧,只不过要麻烦了。先找出哪些是序号,在序号前补位。
不知还有什么方法。


只是看到你解决问题的方案比较儿戏。
不过也够简洁。

所以故意难为你一下。

TOP

用了N多的FOR:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set str=%%i
  4.     if "!str:~0,1!"=="A" (
  5.         set var=!str:~-3!
  6.         if !var! gtr 0 if !var! lss 999 set /a n+=1
  7. )
  8. call,set ".!n!=%%.!n!%%"%%i" "
  9. )
  10. for /f "tokens=2 delims==" %%i in ('set .') do (
  11.     for /f "tokens=1" %%a in ("%%i") do (
  12.         set hh=%%a&set num=!hh:~2,3!&set _!num!=%%i
  13. ))
  14. for /f "tokens=2 delims==" %%i in ('set _') do (
  15.     for %%b in (%%i) do echo %%~b
  16.     echo\
  17. )
  18. pause
复制代码

[ 本帖最后由 keen 于 2009-5-15 00:01 编辑 ]
(*^_^*)

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "usebackq" %%i in (`findstr "^A[0-9]*$" a.txt^|sort`) do (set /a num+=1&set "_!num!=%%i")
  3. for /l %%a in (1 1 %num%) do (
  4. call set "var=%%_%%a%%"
  5. for /f "delims=" %%j in (a.txt) do (
  6. if "%%j"=="!var!" (set flag=yes&set /a n=0) else (
  7. echo %%j|findstr "^A[0-9]*$">nul&&(set flag=&set /a n+=1&(if !n! equ 1 echo.))
  8. )
  9. if defined flag echo %%j
  10. )
  11. )
复制代码

[ 本帖最后由 weichenxiehou 于 2011-1-1 20:02 编辑 ]
看得多说得多,远比不上写得多。

TOP

本帖最后由 lengmoke 于 2021-9-23 17:06 编辑
  1. @echo off & setlocal EnableDelayedExpansion
  2. md temp
  3. for /f "tokens=1* delims=:" %%i in ('findstr /n .* "a.txt"') do (
  4.     if not "%%j"=="" ( set "str=%%j" & set "strs=!strs! !str: =+!" ) else ( md "temp\!strs!" & set "strs=" )
  5. )
  6. md "temp\!strs!"
  7. for /f "delims=" %%i in (' dir /b/on %cd%\temp ') do (
  8.     for %%j in (%%i) do ( set "str=%%j" & echo !str:+= !)
  9.     echo.
  10. )
  11. rd /q/s temp
复制代码

TOP

试了试,发现还是和前辈们思路基本一致,就不好意思发出来了。

TOP

返回列表