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

[文件操作] 批处理根据a文件夹里文件名两个位置之间的字符,剪切到b文件夹相同字符的子文件夹

根据a文件夹里文件名两个位置之间的字符,把文件剪切到b文件夹相同字符的子文件夹里啊

我的D盘里有两个文件夹:基因合成和测序结果;
            测序结果文件夹里有很多文件,比如:[K3746-5001-1-26-PUC57]M13-48_B03 ;  [K3746-5001-25-48-PUC57]M13-48_B03;
                                                           [T4567-5003-25-48-PUC57]M13-47_C03 ;     [V2001-5002-25-48-PUC57]M13-47_C03
           基因合成文件夹里有子文件夹,子文件夹里又有文件夹5001    5002    5003    5004等等。
           我想把测序结果文件夹里的文件,根据名字的第8-11个字符,分别是:   5001   5001   5003   5002,把相应的文件剪切到基因合成子 子相应文件夹里。
  求大神教我啊 :'( :'( :'(

回复 47# qixiaobin0715


好的,谢谢大哥哈

TOP

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

回复 46# 13545876873
记得你还需要提取一个全序列文本。
可以在第40楼代码中,原第18~19行之间增加一行:
  1. set str=!str!%%l
复制代码
原第21~22行之间增加一行:
  1. echo,!str!>"%%i.txt"
复制代码
就OK了!
记得要将代码另存为ANSI编码啊。
1

评分人数

    • 13545876873: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

回复 45# qixiaobin0715

大哥 可以啦,完全没问题啦

非常感谢大哥和其他几位大哥的帮助:lol

TOP

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

TOP

回复 44# qixiaobin0715



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

TOP

回复 45# qixiaobin0715



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

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

回复 43# qixiaobin0715

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

cmd显示 无法打开htm文件

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 ">" %%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

回复 39# xczxczxcz


TOP

回复 38# qixiaobin0715


好吧

谢谢大哥哈

TOP

回复 32# 13545876873


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

TOP

回复 35# 13545876873


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

TOP

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

TOP

返回列表