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


大哥这个运行得没问题哈

TOP

回复 28# qixiaobin0715


大哥    用了xczxczxcz  和31楼大哥的方法,可以在每个子文件夹里,在MyScript.ps1  文档里修改  ,然后用MyScript.bat  自动生成了哈

我在想能不能在搞一个bat,不用修改MyScript.ps1  文档,也可以批量处理多个子文件夹啊

TOP

问你6楼代码测试结果就是为了继续下一步,你也不说一声。假设6楼代码没有问题,试试下面代码是否可行。未测试,效率可能不高:
  1. @echo off
  2. cd /d "D:\基因合成\2022.5\"
  3. for /d %%i in (*) do (
  4.   move "D:\测序结果\*-%%i-*.ab1" "%%i\"
  5. )
  6. for /d %%i in (*) do (
  7.   pushd "%%i"
  8.   for /f "tokens=2-4 delims=-" %%a in ('dir /b /a-d *.ab1') do (
  9.     set n=0
  10.     setlocal enabledelayedexpansion
  11.     for /f "delims=" %%j in ('findstr ">" %%a.htm') do (
  12.       set "str1=%%j"
  13.       set "str1=!str1:*span =<span !"
  14.       set "str1=!str1:</td></tr>=! span"
  15.       set "str1=!str1:<= !"
  16.       set "str1=!str1:>= !"
  17.       set "str1=!str1:/=!"
  18.       for %%k in (!str1!) do (
  19.         if "%%k"=="span" (
  20.           if !n! geq %%b if !n! leq %%c set str2=!str2!!var!
  21.           set /a n+=1
  22.         )
  23.         set "var=%%k"
  24.       )
  25.     )
  26.     echo,!str2!>%%a-%%b-%%c.txt
  27.     endlocal
  28.   )
  29.   popd
  30. )
  31. pause
复制代码
1

评分人数

TOP

回复 36# qixiaobin0715


大哥  
你这个可以把ab1文件,从测序结果文件夹里,剪切到相应文件夹;
                                也能在相应文件夹里生成相应的txt文档,但就是有一个小小的问题,我用图片说明一下哈

   
    比如:     5001-25-52这个文本里显示的字母完全是我想要(第52个也就是到了最后一个字母)
                 
但               5001-1-14文本里的字母      不是到5001-14的最后一个字母,它少了17个字母
                   5001-1-26文本里的字母       不是到5001-26的最后一个字母,它少了17个字母
                   5001-25-38文本里的字母      不是到5001-38的最后一个字母,它少了17个字母
只有要选取到最后的(5001-52)字母,才会完全正确,,,但如果选取到中间就结束,就会少17个字母啊:'(

TOP

回复 37# 13545876873
也不知你这是什么规则,文本规律和你的需求差距较大,还是你自己好好整理思路,看看文本和你的需求到底有何联系。htm文件要用记事本而不能用ie打开,因为处理的是htm的源代码而不是用ie打开后的效果。

TOP

回复 35# 13545876873


    基本上是,俺灰常不喜欢WIN7那个垃圾阉割系统,所写就不想兼容它。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 32# 13545876873


    SO EASY  , 但有点懒, 你自己附件不一次全部提供,偶只是照附件内容写写。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 38# qixiaobin0715


好吧

谢谢大哥哈

TOP

回复 39# xczxczxcz


TOP

回复 37# 13545876873
我想你要的结果可能是除了正常分组序列的字符之外,还要将序列向右偏移17个字符,看看这样是否符合你的需求,未经测试:
  1. @echo off
  2. cd /d "D:\基因合成\2022.5\"
  3. for /d %%i in (*) do (
  4.   move "D:\测序结果\*-%%i-*.ab1" "%%i\"
  5. )
  6. for /d %%i in (*) do (
  7.   pushd "%%i"
  8.   set x=0
  9.   setlocal enabledelayedexpansion
  10.   for /f "delims=" %%j in ('findstr "&gt;" %%i.htm') do (
  11.     set "str1=%%j"
  12.     set "str1=!str1:"color:red;">= ### !"
  13.     set "str1=!str1:</span>= ### !"
  14.     set "str1=!str1:<= !"
  15.     for %%l in (!str1!) do (
  16.       if "!str2!" == "###" (
  17.         set /a x+=1
  18.         set _!x!=%%l
  19.       )
  20.       set str2=%%l
  21.     )
  22.   )
  23.   for /f "tokens=2-4 delims=-" %%a in ('dir /b /a-d *.ab1') do (
  24.     setlocal enabledelayedexpansion
  25.     for /l %%d in (%%b,1,%%c) do (
  26.       set var=!var!!_%%d!
  27.     )
  28.     set /a n=%%c+1
  29.     if defined _!n! (
  30.       for %%e in (_!n!) do (
  31.         echo,!var!!%%e:~,17!>%%a-%%b-%%c.txt
  32.       )
  33.     ) else (
  34.       echo,!var!>%%a-%%b-%%c.txt
  35.     )
  36.     endlocal
  37.   )
  38.   endlocal
  39.   popd
  40. )
  41. pause
复制代码
1

评分人数

TOP

回复 43# qixiaobin0715

大哥,这个可以把ab1文件  剪切到相应文件夹,也能生成相应的txt文档,但txt文档是空的哈,里面一个字母都没有

cmd显示 无法打开htm文件

TOP

本帖最后由 qixiaobin0715 于 2022-5-25 13:25 编辑

你的测试文件有问题:
1.文件夹中存在序列相同的文件。比如5001文件夹中存在文件名片段相同的字符,5001-25-48字段和5001-1-26字段各重复4个。
2.你提供的测试文件中htm文件的文件名是和文件夹名相同的,我猜想这次测试应当是不同的。比如文件夹5001中的htm文件应当是5001.htm。
3.如果htm文件名有空格请把代码第10行中的 %%i.htm 用双引号(注意是英文引号)括起来 "%%i.htm"。
你可以用你提供的 测试文件试一下。
或者你用37楼测试成功的测试文件试试。

先前没有测试,刚刚用你提供的文件测试没有发现问题。
要么就是htm文件的编码问题。



此帖不再关注

TOP

回复 45# qixiaobin0715



大哥  好奇怪啊 ,  我用我上传的5001文件夹和文件处理,确实没有问题。
但其他的文件夹里,生成的txt文本都是空白,  好奇怪啊

TOP

回复 44# qixiaobin0715



大哥  我上传了5001-5004,帮忙看看问题出在哪呢
蓝奏:   https://wwn.lanzoub.com/icTLd05erpcj

TOP

回复 44# 13545876873
将代码第10行 %%i.htm 改为 %%i.html
然后将代码另存为ANSI编码。

TOP

返回列表