批處理新手入門導讀[視頻教程]批處理基礎視頻教程[視頻教程]VBS基礎視頻教程
[批處理文件精品]批處理版照片整理器[批處理文件精品]純批處理備份&還原驅動在線第三方下載
返回列表 發帖

[文本處理] 大神們,怎么將A文檔內容逐行加入到B目錄的所有TXT中

本帖最后由 牛二和尚 于 2020-4-4 10:43 編輯

大神們,怎么將A文檔內容逐行加入到B目錄的所有TXT中,并且加過了的就不再家,加完也不加。
A文檔的內容比如

將上面的內容每兩行加到B目錄內的,1.TXT,2.TXT,3.TXT逐次加,加完為止,不重復就行,每個TXT加兩行,謝謝,能BAT最好
附件: 您需要登錄才可以下載或查看附件。沒有帳號?注冊

回復 1# 牛二和尚


    網上找了一段這樣的代碼,但是運行后不行
@echo off
SET FILE=test.txt
set /a rr=%random% %% 1000
for /f "usebackq delims=" %%a in (`more +%rr% %FILE%`) DO (
  echo %%a
  goto :xx
)
:xx

TOP

回復 2# 牛二和尚
  1. @echo off & setlocal enabledelayedexpansion
  2. :main
  3.     if not exist b md b
  4.     call:fopen A.txt text
  5.     set /A len=fopen_len-1
  6.     for /L %%i in (0,2,%len%) do call:out %%i
  7. pause
  8. goto:eof
  9. :fopen
  10.     rem %~1 為讀取文件名,%~2為儲存的變量名
  11.     rem 采用數組的方式儲存,不儲存換行符
  12.     rem 若無%~2,使用%~n1作為儲存的變量名
  13.     set fopen_file=%~1
  14.     if "%~2"=="" ( set "fopen_vale=%~n1" ) else ( set "fopen_vale=%~2" )
  15.     set fopen_len=0
  16.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  17.         set %fopen_vale%[!fopen_len!]=%%j
  18.         set /A fopen_len+=1
  19.     )
  20. goto:eof
  21. :out
  22.     set /A next=%~1+1
  23.     set /A name=next/2+1
  24.     echo=!text[%~1]! >b\%name%.txt
  25.     echo=!text[%next%]!>>b\%name%.txt
  26. goto:eof
復制代碼
1

評分人數

TOP

回復 3# wujunkai


    謝謝,A文檔里的內容已經在B文檔里生成了新的文件,如果不生成新的文件,把這些內容順次加到B文檔已有的文件里呢?

TOP

回復 4# 牛二和尚


    把27行的
  1. echo=!text[%~1]! >b\%name%.txt
復制代碼
改為
  1. echo=!text[%~1]! >>b\%name%.txt
復制代碼
1

評分人數

TOP

本帖最后由 牛二和尚 于 2020-4-4 14:21 編輯

回復 4# 牛二和尚


    加入的不是1.txt,2.txt這種文檔,而是B目錄里已經有的其他非數字命名的文檔呢,比如ace.txt ,中國節日.txt這種
我剛開始表述不清楚,不需要在B文檔里生成1.txt,2.txt這種新文件,只是把A文檔里兩行字符按照順序添加到B目錄已經有的文件里

TOP

回復 5# wujunkai

   加入的不是1.txt,2.txt這種文檔,而是B目錄里已經有的其他非數字命名的文檔呢,比如ace.txt ,中國節日.txt這種
我剛開始表述不清楚,不需要在B文檔里生成1.txt,2.txt這種新文件,只是把A文檔里兩行字符按照順序添加到B目錄已經有的文件里

TOP

回復 6# 牛二和尚


    這樣會出現一些問題,比如程序獲取的文件順序和你想要加入數據的順序不一樣。。。
    當然還是可以解決的,不過需要更完善的需求
1

評分人數

TOP

回復 8# wujunkai


    隨機都可以,只要不重復添加

TOP

順序無所謂,只要給每個txt添加的內容不同就行

TOP

回復 8# wujunkai


順序無所謂,只要給每個txt添加的內容不同就行,添加的位置也是隨機就行,不一定添加到開頭或結尾,只要添加上就行,比如B目錄里給第一個txt添加的是A.TXT的第一二行,給第二個txt添加的就是第三四行。

TOP

回復 11# 牛二和尚
  1. @echo off & setlocal enabledelayedexpansion
  2. :main
  3.     if not exist b md b
  4.     call:fopen A.txt text
  5.     set /A len=fopen_len-1
  6.     dir b\*.txt /B >txt.tmp
  7.     call:fopen txt.tmp names
  8.     for /L %%i in (0,2,%len%) do call:out %%i
  9.     del txt.tmp
  10. pause
  11. goto:eof
  12. :fopen
  13.     rem %~1 為讀取文件名,%~2為儲存的變量名
  14.     rem 采用數組的方式儲存,不儲存換行符
  15.     rem 若無%~2,使用%~n1作為儲存的變量名
  16.     set fopen_file=%~1
  17.     if "%~2"=="" ( set "fopen_vale=%~n1" ) else ( set "fopen_vale=%~2" )
  18.     set fopen_len=0
  19.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  20.         set %fopen_vale%[!fopen_len!]=%%j
  21.         set /A fopen_len+=1
  22.     )
  23. goto:eof
  24. :out
  25.     set /A next=%~1+1
  26.     set /A num=%~1/2
  27.     set "name=!names[%num%]!"
  28.     if "%name%"=="" (
  29.         echo the text is too long
  30.         echo=!text[%~1]!,!text[%next%]!
  31.         goto:eof
  32.     )
  33.     echo=!text[%~1]!>>b\%name%
  34.     echo=!text[%next%]!>>b\%name%
  35. goto:eof
復制代碼
固定添加到結尾。有一個小bug——如果b文件夾內的txt文檔的數目不夠將提示
  1. the text is too long
復制代碼

TOP

回復 12# wujunkai


    萬分感謝,費心了,今天評分超過限制,只有明天了

TOP

回復 13# 牛二和尚


    這個。。。其實不評分也沒有關系
1

評分人數

    • 牛二和尚: 感謝給帖子標題標注[已解決]字樣技術 + 1

TOP

返回列表
36选7开奖结果今天福建