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

[文本处理] [已解决]批处理如何按规则提取文本内容并输出到对应路径的文本里?

现有一文本内容如下:

a|1|852963
a|2|78412346
a|3|778945214
b|1|135497
b|2|789465421
b|3|7812168

要求:
将第一列为a,第二列为1的对应第三列内容输出到D:\a\1\abc.txt
将第一列为a,第二列为2的对应第三列内容输出到D:\a\2\abc.txt
将第一列为a,第二列为3的对应第三列内容输出到D:\a\3\abc.txt
将第一列为b,第二列为1的对应第三列内容输出到D:\b\1\abc.txt
将第一列为b,第二列为2的对应第三列内容输出到D:\b\2\abc.txt
将第一列为b,第二列为3的对应第三列内容输出到D:\b\3\abc.txt
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 pcl_test 于 2016-1-10 00:32 编辑
  1. @echo off
  2. for /f "tokens=1-3delims=|" %%a in ('type "a.txt"')do (
  3.     if not exist "D:\%%a\%%b\" md "D:\%%a\%%b\"
  4.     rem 追加内容改为>>
  5.     >"D:\%%a\%%b\abc.txt" echo;%%c
  6. )
  7. pause
复制代码
1

评分人数

    • forevergt: 太牛了,原来%%a,%%b,%%c就分别默认代表1 ...技术 + 1

TOP

回复 1# forevergt
水一个
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type "%~f1"')do (
  3. set "new=%%i"
  4. set "new=!new:|=\!"
  5. for /f "delims=" %%j in ("d:\!new!")do (
  6.   if not exist "%%~dpj" md "%%~dpj"
  7.   if not exist "%%~dpjabc.txt\" (
  8.    if not exist "%%~dpjabc.txt" cd.>"%%~dpjabc.txt"
  9.    if exist "%%~dpjabc.txt" (echo,%%~nxj)>>"%%~dpjabc.txt"
  10.   )
  11. )
  12. )
  13. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 2# pcl_test


    如果我需要每个abc.txt文本第一行都有一串字符abcde,然后下面第二行开始才是指定第三列的内容,要怎么写?

TOP

回复 4# forevergt


   echo;abcde&echo;%%c

TOP

本帖最后由 forevergt 于 2016-1-10 02:07 编辑

回复 5# pcl_test
  1. @echo off
  2. for /f "tokens=1-3delims=|" %%a in ('type "a.txt"')do (
  3.     if not exist "D:\%%a\%%b\" md "D:\%%a\%%b\"
  4.     if not exist "D:\%%a\%%b\abc.txt" cd.> "D:\%%a\%%b\abc.txt"
  5.     for /f "delims=" %%i in (D:\%%a\%%b\abc.txt) do (
  6.         if %%~zi equ 0 echo abcde >"D:\%%a\%%b\abc.txt"
  7.     )
  8.     >>"D:\%%a\%%b\abc.txt" echo;%%c
  9. )
  10. pause
复制代码
为什么我这样写abc.txt只显示:
abcde
“第三行对应第三列”

??

TOP

回复  pcl_test 为什么我这样写abc.txt只显示:
abcde
“第三行对应第三列”

??
forevergt 发表于 2016-1-10 02:06



    abcde与“第三行对应第三列”中间应该还有两行,却没了

TOP

回复 5# pcl_test


    已解决问题:
  1. @echo off
  2. for /f "tokens=1-3delims=|" %%a in ('type "a.txt"')do (
  3.     if not exist "D:\%%a\%%b\" md "D:\%%a\%%b\"
  4.     if not exist "D:\%%a\%%b\abc.txt" echo abede>"D:\%%a\%%b\abc.txt"
  5.     >>"D:\%%a\%%b\abc.txt" echo;%%c
  6. )
  7. pause
复制代码
非常感谢!

TOP

返回列表