[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
你这800多个三位数有换行吗?如果有,每行多少个?如何提取?是仅提取123、124、125、134、135、145、234、235、245、345这些数字出来,还是提取包含这些数字的行?重新命名的1000多个文本是已经存在还是靠批处理生成?
看得多说得多,远比不上写得多。

TOP

用findstr应该会奇慢无比:
  1. @echo off
  2. md results 2>nul
  3. for /f "delims=" %%a in ('dir /b *.txt') do (
  4.   cd.>"results\_%%a"
  5.   for %%i in (123 124 125 134 135 145 234 235 245 345) do (
  6.     findstr "%%i" "%%a">nul&&echo,%%i
  7.   )>>"results\_%%a"
  8. )
复制代码
用法:将以上代码保存为test.bat,放到该目录执行即可。

用awk应该会好点儿:
  1. BEGIN{
  2.   split("123 124 125 134 135 145 234 235 245 345",numbers)
  3.   for(number in numbers) x[numbers[number]]=""
  4. }
  5. FNR==1{
  6.   if(last!="") close(last)
  7.   last="results\_" FILENAME
  8. }
  9. {
  10.   for(i=1;i<=NF;i++)
  11.     if($i in x) print $i>last
  12. }
复制代码
用法,将以上代码保存为test.awk,下载gawk.exe,编写test.bat如下:
  1. @echo off
  2. md results 2>nul
  3. gawk -f test.awk *.txt
复制代码
然后将三个文件放到该目录,执行bat即可。
看得多说得多,远比不上写得多。

TOP

返回列表