【问题标题】:join files inside every folder using batch command使用批处理命令连接每个文件夹中的文件
【发布时间】:2016-04-04 15:22:39
【问题描述】:

我有 10-20 个目录,每个文件夹中有许多文件。
我想将每个文件夹中的每个文件包加入一个文件,所以如果我有 20 个文件夹和 2300 个文件,我想要 20 个加入的文件。

例子

INPUT

folder1 - 500 files
folder2 - 340 files
folder3 - 5 files

OUTPUT REQUEST
folder1.txt (500 joined files)
folder2.txt (340 joined files)
folder3.txt (5 joined files)

但是我有很多文件夹,所以我尝试找到一个 .bat 命令来自动创建此操作。

视频:what i want

【问题讨论】:

  • 对几个项目做同样的事情,for /?通常是要使用的命令。
  • 你能告诉我们你到目前为止所做的尝试吗?
  • for /D %%a in (*) do copy %%a %%a.txt
  • Aacini 你的命令很棒,回答我,我可以检查你的答案。 UTF-8 编码是默认的,对吧?

标签: batch-file batch-processing


【解决方案1】:

假设您的每个文件都是在每个最后一行末尾带有换行符终止符的文本文件,那么您可以使用以下内容:

for %%F in ("folder1" "folder2" "folder3") do >"%%F.txt" type "%%~F\*"

每个文件的名字都会通过stderr输出到屏幕上。

如果你想隐藏文件名:

for %%F in ("folder1" "folder2" "folder3") do >"%%F.txt" 2>nul type "%%~F\*"

如果您希望文件名包含在文本文件输出中:

for %%F in ("folder1" "folder2" "folder3") do >"%%F.txt" 2>&1 type "%%~F\*"

如果您想处理当前目录中的所有文件夹,则将上面列出的任何命令的 FOR 命令更改为如下所示:

for /D %%F in (*) do ...

【讨论】:

  • 感谢提示,但如果我对 txt 文件(UTF-8 和 Windows 1251)有不同的编码,我可能无法在记事本 ++ 等编辑器上显示某些字符吗?
  • @PeterLong - 这是一个很难回答的问题。这取决于你遇到的角色。我相信像 TYPE 这样的 cmd 命令只能理解 ANSI 和 UTF-16。 TYPE 命令将尝试将 UTF-16 转换为 ANSI,但它只能支持映射到当前代码页的字符。当然,所有单字节 UTF-8 字符都可以工作,但多字节值将无法正确转换。只要它们都使用相同的代码页(如 Windows 1251),您的 ANSI 文件都可以正常工作。
猜你喜欢
  • 2018-09-21
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多