[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
最后一列全为0才会复制,不要牙膏。双击按提示操作。
  1. @echo off & cd/d "%~dp0" & setlocal EnableDelayedExpansion
  2. echo 把【文件夹】拖到此窗口中,会处理子目录,非相关文件先移出再运行。
  3. echo;&set /p var=拖入文件夹,并回车:& CLS
  4. for /r "%var%" %%a in (*.txt) do ( for /f "delims=" %%a in ('type "%%a"') do (
  5. set "space=%%a" & set "space=!space: =/!"
  6. for /f "delims=" %%a in ("!space!") do if "%%~nxa" neq "0" set "#=#"
  7. )
  8. if not defined # ( xcopy /y "%%a" "0_Folder\">nul&&echo 复制 %%~nxa ) else set "#="
  9. )
  10. pause & exit
复制代码
1

评分人数

    • hlyahs: 今天和室友聊到用批处理处理数据,又想起大 ...技术 + 1

TOP

回复 16# xczxczxcz
大神,感谢您的帮助,可是我的最后一列没有全部为0的,我需要的是最后一列只要出现一次0,就把这个txt筛选出来,不复制也可以,直接把它们挪到另一个文件夹中也行
大神求你帮帮我Orz,周五就要开组会了,我基础数据都还没有处理好,没办法进行下一步工作,泪奔QAQ

TOP

回复 16# xczxczxcz

啊啊啊啊!!!大神我白痴了,我突然反应过来只要把您给的bat改成识别最后一列全部都是1的,就可以筛选出存在0的列啦啦啦啦啦啦啦啦!
大神我先试试哈

TOP

回复 16# xczxczxcz

大神,我把您的这一句改成了for /f "delims=" %%a in ("!space!") do if "%%~nxa" neq "1" set "#=#",
想尝试把最后一列全部是1的提取出来,可是双击bat打开后,文件夹拖进去处理没有反应,等了一会变成了“按任意键继续”,但是没有处理结果出来。
大神,请问我是犯了什么错误么?

TOP

回复 19# hlyahs

没有错误,你的行尾有空格而已。这个比上个快些。话不要说模棱两可。
  1. @echo off & cd/d "%~dp0" & setlocal EnableDelayedExpansion
  2. echo 把【文件夹】拖到此窗口中,会处理子目录,非相关文件先移出再运行。
  3. echo;&set /p var=拖入文件夹,并回车:& CLS
  4. for /r "%var%" %%a in (*.txt) do ( for /f "delims=" %%a in ('type "%%a"') do (
  5. set "space=%%~nxa" & set "space=!space: =/!"
  6. call :AAA "!space!" )
  7. if defined # ( xcopy /y "%%a" "0_Folder\">nul&&echo 复制 %%~nxa )
  8. )
  9. pause & exit
  10. :AAA
  11. set "#="
  12. for /f "delims=" %%a in ("%1") do (if  "%%~nxa"=="0" set "#=#" &goto :eof )
复制代码
1

评分人数

TOP

回复 20# xczxczxcz

我以后会更加准确的表达自己的问题的,谢谢大神提醒。
然后,大神,我……早上重新查看数据,意识到还需要进一步提取才能得到我最终需要的数据。
如下:
所有txt中的第3列,如果出现大于100的数字的话,就将该txt复制到另一个文件夹中。

我保证这是我近期最后一次打搅,谢谢大神你一直都在。

TOP

你MM的能不能把所有一次提出。本来一个批就可以搞定的。硬要用好几个?是行尾全部为0 还是部分为0,第三列是任意一个大于100,还是全部大于100。尾部为0和列大于100,是并集还交集还是什么的。你奶奶的就不能一次讲清楚?本来很简单的问题,硬是这么搞来搞去的。偶一向性格好的都受不鸟了。

TOP

回复 22# xczxczxcz

我需要的是第三列是任意一个大于100,就提取出来,复制到另一个文件夹。

对不起……因为我的提取是需要拆分开来的,不同提取的部分有不同的用处,需要分别保留。我一开始也没想到会有人愿意帮我那么多那么复杂的……
真的很抱歉,是我自己没有学好编程,才临时抱佛脚来寻求帮助。

大神请你不要凶我,我……我会更崩溃的,马上开组会才发现之前绘图脚本的检验一搞错了……但是还好有你一直帮我提取数据,至少我工作的前半部分可以顺利进行,我回头看了看,问了5次问题,你都在,真的很感谢你。

TOP

回复 1# hlyahs


    把原始txt文件压缩之后上传到顶楼,把所有的需求列个1、2、3、4、5也更新到顶楼,我来试试写个新的代码。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23# hlyahs


    对你有帮助的代码,可以点击相应楼层右下角的“评分”来感谢作者
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

第三列任意一行有一个大于100时提取。不处理行尾的0/1。
  1. @echo off & cd/d "%~dp0" & setlocal EnableDelayedExpansion
  2. echo 把【文件夹】拖到此窗口中,会处理子目录,非相关文件先移出再运行。
  3. echo;&set /p var=拖入文件夹,并回车:& CLS
  4. for /f "delims=" %%a in ('dir/a-d/b/s "%var%\*.txt"') do (
  5. call :BBB "%%a"
  6. if defined # ( xcopy /y "%%a" "3_100_Folder\">nul&&echo 复制 %%~nxa )
  7. set "#="
  8. )
  9. pause & exit
  10. :BBB
  11. for /f "tokens=3" %%i in ('type %1') do (
  12. for /f "tokens=1* delims=." %%a in ("%%~nxi") do if "%%b"=="" (set /a n1=%%a,n2=0) else (echo %%b)|findstr "[1-9]">nul 2>&1 && (set/a n1=%%a,n2=1) || (set/a n1=%%a,n2=0)
  13. if !n2! equ 0 (if !n1! gtr 100 (set "#=#" &goto :eof)) else if !n1! geq 100 (set "#=#"&goto :eof )
  14. )
复制代码
只是针对该贴写的。勿套用到其它地方。批中只针对是否大于100而处理。能较快出结果,未优化。
1

评分人数

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

TOP

回复 24# Batcher
您好,感谢您的帮助,之前那位大神已经帮我写出程序了,很抱歉给您添麻烦了哈,谢谢~

TOP

回复 26# xczxczxcz
感谢您的帮助,问题已经解决了。
很抱歉打扰那么久,谢谢。

TOP

我看完了。哈哈哈哈哈

TOP

回复 29# 78785858

QAQ!!!!!!!!

TOP

返回列表