找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 4398|回复: 6

[文件操作] [已解决]批处理如何 整合 和 分解 文件及内容?

[复制链接]
发表于 2025-7-4 11:56:56 | 显示全部楼层 |阅读模式
zh-CN 文件夹下有几千个文件,有带后缀的也有不带后缀的,每个文件(ANSI)只有一行文本且不带回车换符。

求批处理:按文件名称为序,将所有文件内容整合成一个文件,内容为:
文件名=内容
文件名=内容
文件名=内容
。。。

求批处理:将整合的文件分解成各个文件。即上面的反操作。

谢谢 3 楼 aloha20200628 的代码!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2025-7-4 11:57:20 | 显示全部楼层
本帖最后由 chishingchan 于 2025-7-4 11:59 编辑

图片上传失败!
1.png    42,279 字节

提示信息
附件上传完成!成功 0 个,失败 1 个:
1.png: 附件文件无法保存
发表于 2025-7-4 12:44:14 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-4 13:04 编辑

回复 1# chishingchan

整合操作版(以下代码不要保存在 d:\zh-CN 目录中,如存于 d:\ 根目录中即可,处理结果文件 all.txt 存与批处脚本文件同目录)

  1. @echo off &dir /b/s/a-d "d:\zh-CN">"%temp%\$.#"
  2. (for /f "usebackq delims=" %%F in ("%temp%\$.#") do for /f "delims=" %%a in ('type "%%F" ') do echo,%%F=%%a)>all.txt
  3. del /q "%temp%\$.#" &pause&exit/b
复制代码
分解操作版(要求被分解的文件名中不再包含=字符)

  1. @echo off &for /f "tokens=1* delims==" %%a in (all.txt) do set/p="%%b"<nul>"%%a"
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢!需要改进一下

查看全部评分

 楼主| 发表于 2025-7-4 16:40:00 | 显示全部楼层
回复  chishingchan

整合操作版(以下代码不要保存在 d:\zh-CN 目录中,如存于 d:\ 根目录中即可,处理 ...
改了位于当前目录:
@echo off
cd /d %~dp0
dir /b/s/a-d zh-CN>"$.#"
(for /f "usebackq delims=" %%F in ("$.#") do for /f "delims=" %%a in ('type "%%F" ') do echo,%%F=%%a)>all.txt

del /q "$.#"
pause
exit/b


文件中竟然也存在 UTF-8 格式的,文本乱码了!
 楼主| 发表于 2025-7-4 17:01:34 | 显示全部楼层
回复 3# aloha20200628


    临时解决方法:
选运行命令行:chcp 65001 后再运行批处理
发表于 2025-7-4 18:51:54 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-4 20:07 编辑

回复 5# chishingchan

   如果能很方便分割两个目录区别 ansi 和 utf-8 两类源文件,即可针对 utf-8 目录文件先切换码页 65001 处理...
   为此,以下给一版代码(存为 test.bat 不要在 d:\zh-CN 目录中运行)其中调用 coder.exe (从本坛第三方下载,落地即用 http://bcn.bathome.net/s/tool/index.html?key=coder)检查 d:\zh-CN 目录(由楼主替换其真实目录)中的文本文件编码类型,假设该目录中只有 ansi 和 utf-8 两类编码文件,其结果是将 ansi 编码文件移入子目录 d:\zh-CN\ansiTXT,其余一律移入子目录 d:\zh-CN\utf8TXT ...

  1. @echo off &setlocal & set "da=d:\zh-CN\ansiTXT" &set "du=d:\zh-CN\utf8TXT"
  2. md "%da%" "%du%" 2>nul
  3. for /f "delims=" %%F in ('dir /b/a-d *.*') do for /f "delims=" %%v in ('coder -s -a gc -f "%%F" ') do if /i "%%v"=="ansi" (move /y "%%F" "%da%") else (move /y "%%F" "%du%")
  4. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢指导

查看全部评分

发表于 2025-7-4 20:09:51 | 显示全部楼层
回复 2# chishingchan


   

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢指导

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 10:05 , Processed in 0.018340 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表