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

问题解决了,谢谢!

TOP

本帖最后由 再世情緣 于 2014-8-4 01:56 编辑

回复 16# 思想之翼


    综合了之前那位朋友的方法,之后生成了目前的代码,但是,还是不可避免的要call一次。。。。
  1. @echo off &setlocal enabledelayedexpansion &color 0a
  2. set "var=%cd%"
  3. set "file1=文本"
  4. set "file2=文件夹"
  5. pushd %var% >nul
  6. for /l %%i in (1,1,9999) do (
  7.   if exist "!file1!%%i\*.txt" (
  8.    set "f1=!file1!%%i"
  9.    set "f2=!file2!%%i"
  10.     mkdir "!f2!" >nul 2>nul
  11.     call :head
  12.   )
  13. )
  14. pause.
  15. call exit
  16. :head
  17. for /f "delims=" %%a in ('dir /b /a -d /s "%f1%\*.txt" 2^>nul') do (
  18.   set "txtpath=%%~fa"
  19.   set "txtname=%%~nxa"
  20.   call :main !txtpath!
  21.   rem pause.>nul
  22. )
  23. rem pause.
  24. goto :eof
  25. :main
  26. for /f "usebackq tokens=3 delims= " %%a in ("%1") do (
  27.   set "code0=%%a" &&set "code0=!code0: =!"
  28.   set "code=!code0:*●=!" &&set "code=!code!#a9876543210"
  29.   for /f "usebackq skip=1" %%a in ("%1") do (
  30.     set "code2=%%a" &&set "code2=!code2: *=!"
  31.     set /a "len=0x!code:~10,1!","len0=11-len"
  32.     call :getnum
  33.   )
  34. )
  35. echo.当前处理文件:[!txtname!]
  36. echo.获取第一行有效字符:[!code0!]
  37. echo.获取第二行有效字符:[!code2!]
  38. echo.第一行 ● 所在位置:!len0!
  39. echo.第二行第 !len0! 个字符为: [!num!]
  40. echo.写入 [!num!] -^> "%cd%\!f2!\!txtname!"
  41. (echo.!num!)>"%cd%\!f2!\!txtname!"
  42. goto :eof
  43. :getnum
  44. set "num=!code2:~-%len%,1!"
  45. goto :eof
复制代码
1

评分人数

TOP

回复 15# xxpinqz
Len 的值可不用加 /a 效率提升
2

评分人数

TOP

本帖最后由 CrLf 于 2014-8-11 05:42 编辑

回复 15# xxpinqz


    提供一种用于此类特殊情况的长度算法:
  1. set "a=●○○○○○○○○○"
  2. set "b=%a:*●=%"
  3. set /a "len=0%b:○=+1%"
复制代码
----------------------------------------------------------------
还有求余的办法:
  1. set "a=●○○○○○○○○○"
  2. set "b=%a:*●=%"
  3. set /a "c=%b:○=1%,len=c/1000%%9+c%1000%%9"
复制代码
以前用 % 运算来改良生命游戏算法,和现在这个情况太相似了
----------------------------------------------------------------
还有一种思路也属于表驱动法,但用的是 for:
  1. set "a=●○○○○○○○○○"
  2. set "b=%a:*●=%"
  3. for /f "tokens=10" %%a in ("%b:○=. %9 8 7 6 5 4 3 2 1 0") do set "len=%%a"
复制代码

TOP

返回列表